Vous êtes ici : TooZeWeB > Liste des forums > Programmation web > PHP et autres langages serveur > Faire son propre moteur de templates > Lecture du sujet

Forums de TooZeWeB

Redirection rapide vers
Page : 1

Vous devez être inscrit et connecté pour pouvoir écrire dans les forums

Faire son propre moteur de templates ['problème de condition']
fourgpie Posté le 28/03/2008 20:44 - Remonter


Membre
1 message

0 %
Bonjour, j'ai entreprit de faire mon propre moteur de templates, il marche, sauf si il y a des conditions dans le script, je ne sais pas comment faire pour l'intégrer!

Voici le code du moteur de templates :

Code php - Numéro de ligne
  1. function template($page) {
  2. // on s'occupe du skin
  3. $skin = "template.php"; // chemin du fichier
  4. $ouvrir = fopen ($skin, "rb"); // ouverture du fichier
  5. $affichage = fread ($ouvrir, filesize ($skin)); // lecture du fichier et stockage du skin dans une
  6. // variable
  7. fclose ($ouvrir); // fermeture du fichier
  8. // on s'occupe du contenu
  9. switch ($page) { // contrôle du contenu demandé par la page
  10. case "presentation": $include = "presentation.inc"; break;
  11. case "catalogue": $include = "catalogue.inc"; break;
  12. case "contact": $include = "contact.inc"; break;
  13. default: $include = "includes/accueil.php";
  14. }
  15. $ouvrir = fopen ($include, "rb"); // ouverture du fichier
  16. $contenu = fread ($ouvrir, filesize ($include)); // lecture du fichier et stockage du contenu dans une
  17. // variable
  18. fclose ($ouvrir); // fermeture du fichier
  19. // détermination de la date du jour au format JJ/MM/AA
  20. $menu2 = "includes/menu.php";
  21. $ouvrir2 = fopen ($menu2, "rb"); // ouverture du fichier
  22. $menu = fread ($ouvrir2, filesize ($menu2)); // lecture du fichier et stockage du contenu dans une
  23. // expression régulière pour le remplacement des variables
  24. $affichage = ereg_replace("{CONTENU}", $contenu, $affichage); // remplacement de [CONTENU]
  25. // par le contenu demandé par la page
  26. $affichage = ereg_replace("{MENU}", $menu, $affichage); // remplacement de [DATE] par la date du
  27. // jour
  28. // on retourne le code à afficher
  29. return $affichage;
  30. }


Et voilà le code du templates :

Code php - Numéro de ligne
  1.  
  2. include("includes/identifiants.php");
  3. include("includes/ozcode.php");
  4. mysql_connect($serveur, $pseudo2, $pass);
  5.  
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  7. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
  8.  
  9. <head>
  10. <title>Owoze Béta 0.9 ›› Accueil</title>
  11.                
  12.                 </div>
  13.                
  14.                 <div class="corps_header"> </div>
  15.                 <div class="corps">
  16.                         <div class="menu">
  17.                                 {MENU}
  18.                         </div>
  19.                         <div class="corps_inter">
  20.                                 {CONTENU}
  21.                         </div>
  22.                 </div>
  23.                 <div class="corps_footer"> </div>
  24.         </div>
  25. </body>
  26. </html>


Et voila la page avec les conditions :

Code php - Numéro de ligne
  1. <div class="accueil">
  2.         <div class="accueil_header"> </div>
  3.         <div class="accueil_corps">
  4.                 <div class="titre_bloc"><br/>Bienvenue sur le premier site d'Owoze</div>
  5.                 <div class="texte_bloc">
  6.                 <p>Owoze est un jeu de gestion d'entreprise en temps réel, qui devrait disposer d'une carte annimée et vivante, elle aussi mise à jour en temps réelle.
  7.                 <br/><br/> Le jeu devrait disposer d'une bourse d'entreprises, et d'organismes publiques pour gérer l'argent du jeu... Serez-vous prêt à construire votre empire ?
  8.                 A fusionner avec d'autres entreprises pour devenir plus fort, et créer une véritable multinationnale indétronnable ?<br/></p>
  9.                 </div>
  10.         </div>
  11.         <div class="accueil_footer"> </div>
  12. </div>
  13.  
  14. $retour = mysql_query('SELECT * FROM news ORDER BY id DESC LIMIT 0,10');
  15. while ($donnees = mysql_fetch_array($retour))
  16. {
  17.         ?>
  18.         <div class="news">
  19.                 <div class="news_header"><div class="titre_bloc"><br/><?php echo $donnees['titre'];?></div></div>
  20.                 <div class="news_corps">       
  21.                         <div class="texte_bloc">
  22.                         <p style="margin-top:0px;"><?php echo stripslashes(nl2br(code($donnees['contenu'])));?></p>
  23.                         </div>
  24.                 </div>
  25.                 <div class="news_footer"> </div>
  26.         </div>
  27.         <?php
  28. }


Donc voilà, est-ce que quelqu'un peut m'aider à faire marcher des conditions ?

Merci d'avance pour votre aide !


gaga26 Posté le 28/03/2008 23:35 - Remonter




165 messages
18 ans
0 %
Salut,

Je suis peut-être un peu fatigué, mais je ne vois pas de conditions dans ton code !

De plus je ne suis pas sûr que tu ais bien compris le fonctionnement d'un moteur de templates car tu mélange le PHP et le HTML. Si ça peut t'aider, j'ai écrit un cour sur le sujet.


La route est longue, mais la voie est libre...

m.simon Posté le 11/04/2008 23:47 - Remonter




6 messages
22 ans
0 %
Salut! Un moteur de templates qui fonctionne, c'est un peu plus compliqué que ça. Il vaut mieux utiliser une classe disposant de plusieurs méthodes: le constructeur devant vérifier l'intégrité du template, une méthode pour charger le template en mémoire, une autre pour parser le code et introduire les variables simples, une autre pour s'occuper des boucles, conditions etc... Je t'aurais bien mis un petit exemple mais là ce soir je suis crevé. Je repasserais par là sans doute bientôt.


Page : 1

Vous devez être inscrit et connecté pour pouvoir écrire dans les forums

Redirection rapide vers

Retour à la liste des forums, au forum PHP et autres langages serveur, ou au haut de page