Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Templates
Templates Forum d'entraide sur les templates (gabarits) avec PHP. Exemples : Smarty, TinyButStrong... Avant de poster -> FAQ templates et Cours gabarits
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/02/2006, 12h21   #1
Invité de passage
 
Inscription : novembre 2003
Messages : 17
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : novembre 2003
Messages : 17
Points : 3
Points : 3
Envoyer un message via MSN à ZbergK
Par défaut Question au niveau du include des données

Bonjour à tous,

Voilà je réalise une màj de mon site en recodant en utilisant la méthode des Templates.

Pour remplacer par exemple [CONTENU] dans mon template j'utilise un "ereg_replace"

Cela marche trés bien si le contenu que je désire mettre est de l'HTML mais par contre si mon contenu contient du Php, il ne s'exécute pas. il est simplement affiché sans exécuter mon code?

Comme pourrais-je faire pour que le code Php soit exécuté et non affiché

Voici mon code pour le MoteurTemplate :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
Function Moteur($Page) {
 
	$Skin = "template/template.html"; 
	$Ouvrir = fopen ($Skin, "rb"); 
	$Affichage = fread ($Ouvrir, filesize ($Skin)); 
	fclose ($Ouvrir); 
 
	Switch ($Page) { 
		case "accueil": $Include = "data/accueil.inc"; break;
		default: $Include = "data/accueil.php";
	}
 
	$Ouvrir = fopen ($Include, "rb"); 
	$Contenu = fread ($Ouvrir, filesize ($Include));
	fclose ($Ouvrir); 
 
	$Affichage = ereg_replace("\[CONTENU\]", $Contenu, $Affichage); 
 
	return $Affichage;
}
?>
Merci d'avance de votre aide.

ZbergK
ZbergK est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2006, 13h27   #2
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 815
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 815
Points : 3 440
Points : 3 440
Salut !
La philosophie des templates est justement de séparer présentation (HTML/CSS) et logique applicative, accès aux données, etc. (PHP).
Ta démarche d'inclure directement du PHP à exécuter dans une template HTML est donc bancale et fait perdre l'avantage des templates.
=> Revois ta méthodologie.
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2006, 15h19   #3
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

C'est courageux de ta part de coder un nouveau moteur de templates mais je pense que tu pourrais t'éviter des migraines en utilisant l'un des nombreux qui existent déjà et qui fonctionnent à merveille : phplib, Smarty, Templeet, etc.
Le post-it (dans le forum PHP) sur les templates pourrait probablement t'orienter.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2006, 17h38   #4
Invité de passage
 
Inscription : novembre 2003
Messages : 17
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : novembre 2003
Messages : 17
Points : 3
Points : 3
Envoyer un message via MSN à ZbergK
Oui mais j'aimerais réaliser ca moi même, ca ne devrait pas posser de blem de ce niveau.

Mon template ne contient en effet que du Html, c'est bien la le but.
Je posséde également le moteur de mon template qui remplace les diverses balise de ce type [Blabla] par leur contenu.

Dans mon monteur il y la Switch qui réalise l'include pour aller chercher la bonne page.

Et dans CETTE page qui est "Includée" j'aimerais y insérer du code Php, par exemple une requête vers MySql, mais ou se trouve le blem c'est que j'utilise cette fonction ereg_replace()

Et quel n'exécute pas le code Php mais elle l'affiche
Comment faire ?

Merci d'avance de votre aide
ZbergK

Ps : Voici le code du moteur :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
Function Moteur($Page) {
	include ("config/config.php");
 
	$Skin = "template/template.html"; 
	$Ouvrir = fopen ($Skin, "rb"); 
	$Affichage = fread ($Ouvrir, filesize ($Skin)); 
	fclose ($Ouvrir); 
 
	Switch ($Page) { 
		case "accueil": $Include = "data/accueil.inc"; break;
		default: $Include = "data/accueil.php";
	}
 
	$Ouvrir = fopen ($Include, "rb"); 
	$Contenu = fread ($Ouvrir, filesize ($Include));
	fclose ($Ouvrir); 
 
	$Affichage = ereg_replace("\[CONTENU\]", $Contenu, $Affichage); 
 
	return $Affichage;
}
?>
ZbergK est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2006, 18h48   #5
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Bon, en ce cas tu peux eval()uer ton code avant de l'envoyer dans ta page incluse.
Au fait, pourquoi ne pas utiliser file_get_contents() ?

Code :
return preg_replace('#\[CONTENU\]#', eval(file_get_contents($Include)), $Affichage);
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2006, 18h58   #6
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 815
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 815
Points : 3 440
Points : 3 440
C'est quand même très très moche. Dans le fichier que tu inclues tu devrais aussi utiliser ton moteur de templates et pas faire d'eval( )
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2006, 22h59   #7
Invité de passage
 
Inscription : novembre 2003
Messages : 17
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : novembre 2003
Messages : 17
Points : 3
Points : 3
Envoyer un message via MSN à ZbergK
Ok Je suis d'accord avec vous.

Je vais donc recommencer au début sachant que je vx réaliser tout par moi même

Voilà, donc je désire recoder mon site en utilisant un Template
Les pages de mon site garde toute le même design. Baniére en haut, contenu a gauche et menu a droit.

Mais le contenu du menu est dynamique, et le contenu de la page aussi.

Je peux donc utiliser un template pour le design je penses mais comment faire pour le menu de droite et les pages du site qui sont dynamique

---------------------------------
BAN
---------------------------------
Page - Menu

---------------------------------
FOOTER
---------------------------------

Pour mon design aucun blem,
Mais par contre prenons l'exemple de ma page d'accueil qui contient 2 titres un pour les news et l'autre du blabla, mais leur contenu est dynamique, et je dois aller le rechercher dans une DB.

Par contre d'autre page comme celle ou je vais mettre le "logger" elles ne sont pas dynamique, ce n'est qu'un simple formulaire.

Comment puis-je réaliser tout cela aisément en utilisant un template si c'est possible bien sûre ?
Merci d'avance de votre a tous

ZbergK
ZbergK est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h30.


 
 
 
 
Partenaires

Hébergement Web