Compléments de PHP Patrons de page ("templates") Qu'est-ce qu'un patron de pages ? * Terme anglophone: template * En français: "patron" ou "modèle" * Modèle d'apparence des pages d'un site * Canevas HTML avec zones identifiées où placer le contenu * Moteur PHP insère contenu dans canevas * Permet d'uniformiser l'apparence d'un site * Séparation du contenu de l'apparence * Modification de l'apparence du site facile * Ajout et modification du contenu sans souci de l'apparence * Possibilité pour le visiteur de choisir son apparence Principe de génération des pages Modèle d'apparence * Fichier HTML avec balises pour localiser l'insertion du contenu <html> <head> <titre>[TITRE]</titre> <link rel="stylesheet" href="style.css"/> </head> <body> <div class="bandeau"> <img src="logo.gif"/> </div> <div class="menu"> <a href="index.php?page=accueil">Accueil</a><br/> <a href="index.php?page=cv">Curriculum vitae</a> </div> <div class="contenu"> [CONTENU] </div> <div class="copyright"> <p>Copyright 2007 - Nawouak.net</p> <p>Dernière modification [DATE]</p> </div> </body> </html> Générateur des pages (1/2) * Fichier PHP qui insère le contenu dans le modèle d'apparence * Récupération de la page à afficher $page = @$_GET["page"]; * Sélection du contenu à afficher if ($page == "cv") { $fichier_contenu = "cv.htm"; $titre = "Mon CV"; } else { $fichier_contenu = "accueil.htm"; $titre = "Bienvenue sur mon site"; } * Récupération de l'apparence $fichier = fopen("skin.htm","rb"); $html = fread($fichier,filesize("skin.htm")); fclose($fichier); Générateur des pages (2/2) * Récupération de la date de dernière modification $date = date("d/m/Y",filemtime($fichier_contenu)); * Contenu HTML * Récupération du contenu à afficher $fichier = fopen($fichier_contenu,"rb"); $contenu = fread($fichier,filesize($fichier_contenu)); fclose($fichier); * Insertion du contenu dans le modèle d'apparence $html = ereg_replace("\[TITRE\]",$titre,$html); $html = ereg_replace("\[CONTENU\]",$contenu,$html); $html = ereg_replace("\[DATE\]",$date,$html); * Envoi du code HTML au client echo $html; * Contenu PHP * Découpage du modèle d'apparence $html = ereg_replace("\[TITRE\]",$titre,$html); $html = ereg_replace("\[DATE\]",$date,$html); $pos = strpos($html,"[CONTENU]"); echo substr($html,0,$pos); include($fichier_contenu); echo substr($html,$pos+strlen("[CONTENU]"); |