Chapitre 8
COMPLEMENTS DE PHP
Patrons de page ("templates")
 
 
Précédent Suivant
 

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]");