[PHP] Comment utiliser les templates ?


Par Worm Imprimer le tutorial Voir son profil

Avantages de l'utilisation des templates



Les templates (ou modèles) permettent de séparer le code HTML et le script PHP. Dit comme ça, le bénéfice ne vous semble pas évident par rapport à l'immersion des balises html dans le script php. Voilà pour moi les avantages des templates :

- simplification des scripts php
- optimisation plus simple du code html
- plus de flexibilité dans le développement et modification de l'aspect d'un site en quelques secondes
- customisation du site (voir les skins)
- permet au webdesigner qui ne connait pas la programmation de travailler tranquillement sur des sites dynamiques tout en conservant ses outils
- réutilisation plus facile du code


Il existe actuellement de nombreuses librairies de scripts gérant les templates. La plus connue est sûrement FastTemplate, mais elle n'est pas la seule. Pour ma part je lui préfère l'implémentation de la PHPLib.

Je lis régulièrement des avis sur la supériorité de l'une par rapport à l'autre, et je ne rentrerai pas dans ces considérations. Mais pour résumer il semble que FastTemplate soit moins rapide car ce serait une simple traduction d'une librairie PERL et donc n'utilisant pas les meilleures fonctions de PHP.

Pour ceux qui s'inquiètent déjà en se disant qu'il faut installer la PHPLib, ce qui n'est pas toujours possible, ne vous inquiétez pas. Vous n'avez besoin que d'un fichier : template.inc. Vous pouvez jeter le reste si vous le souhaitez.

Premier exemple



Créons un fichier html (template.tpl) contenant ce simple code :

Bonjour {NOM} !C'est ce fichier qui définit l'apparence. Le nom et l'extension du fichier importent peu, c'est à vous de créer une convention qui vous indique que c'est un fichier template.


Maintenant un petit bout de script php, créons un fichier test.php :

<?php
include "template.inc";

$nom="tarzan";
$t = new Template("."); // création du template $t
$t->set_file("page","template.tpl"); // on définit le fichier contenant le modèle
$t->set_var("NOM",$nom); // on indique que l'on doit remplacer {NOM} par le contenu de la variable $nom
$t->parse("MyOutput","page"); // traitement du modele
$t->p("MyOutput"); // on affiche la page complète
?>


C'est un exemple volontairement très simple, mais vous avez là pratiquement toutes les fonctions des templates. Décryptons un peu ce code.

La première ligne inclut le fichier template.inc livrée avec la PHPLib, c'est lui qui contient les fonctions nécessaires pour utiliser les templates. En fait c'est une classe, et il faut donc créer un objet pour pouvoir utiliser les fonctions de la classe.

Le code $t = new Template('.'); crée donc un objet $t et indique le chemin pour accéder aux fichiers templates. Dans ce cas le fichier php et le template sont dans le même dossier, et on aurait aussi pû créer l'objet comme ça : $t = new Template(); .

Ensuite set_file() indique le fichier template à utiliser. Puis, on défini le contenu de la zone {NOM} avec la fonction set_var().

La fonction parse() traite ensuite le template mais n'affiche rien. Pour afficher la page, on utilise la fonction p().

Sur un exemple aussi simple, l'intérêt des templates est limité, mais il vous permet de tester quelques possibilités.

Pour modifier l'aspect de votre page, vous n'avez plus qu'à modifier template.tpl. Vous pouvez le modifier sans rique dans un éditeur car il ne contient aucun code php.

2eme exemple



Créons un tableau avec une liste de nom. Nous allons utiliser non pas un, mais deux templates. D'abord le tableau (tableau.tpl) :

<html>
<table>
{LISTE}
</table>
</html>


il nous faut un deuxième template qui correspond à la présentation d'une ligne du tableau (ligne.tpl) :

<tr>
<td>{ID} : {NOM}</td>
</tr>


Maintenant voyons le script pour afficher le tableau (test2.php):


<?php

include "template.inc";

$tableau= array("tarzan","jane","cheetah");
$t = new Template("tpl/"); // création du template $t

$t->set_file(array(
"page"=>"tableau.tpl",
"ligne"=>"ligne.tpl"
)); // on définit le fichier contenant le modèle

// traitement des lignes du tableau
reset($tableau);

while (list($cle,$valeur) = each($tableau))
{
$t->set_var(array(
"ID"=>$cle,
"NOM"=>$valeur
) );
$t->parse("LISTE","ligne",true);
}

// fin du traitement des lignes du tableau
$t->pparse("MyOutput","page"); // traitement du modele et affichage
?>


J'ai introduit ici quelques différences. Tout d'abord, j'ai placé les fichier templates dans un dossier spécial nommé tpl. la création de l'objet est donc $t = new Template('tpl/');

Comme on utilise 2 templates, on doit le spécifier dans le script. Plutôt que de faire 2 fois appel à la fonction set_var(), on passe un tableau en paramètres. Les fonctions set_file() et set_var() permettent en effet de passer un tableau en paramètre ce qui est parfois bien utile.

La ligne $t->parse('LISTE','ligne',true); permet de créer une ligne du tableau à chaque passage dans la boucle while().
Le paramètre true est nécessaire ici pour afficher plusieurs lignes. Le tableau $tableau a en effet 3 lignes, et sans le paramètre true seule la dernière ligne serait affichée.

Enfin la fonction pparse() rassemble les fonction parse() et p().

La ligne $t->pparse('MyOutput','page'); est donc équivalente aux 2 lignes suivantes :

$t->parse("MyOutput","page");
$t->p("MyOutput");Conclusion


Voilà un aperçu rapide des templates.

Les templates ne se limitent pas aux pages html. on peut aussi générer du xml, wml, texte des e-mails'. On peut par exemple avec le même script php générer la version html et la version wml d'une page en indiquant seulement un template différent clindoeil.gif
« Trouve un travail qui te plaît et plus jamais tu ne travailleras » Confucius


1 commentaire(s)

maxrider Date inconnue
Bon tutorial, j'ai pu apprendre qui me facilite la vie au moins !
Je ne mets que 8 car il manque un moteur de template très utilisé alias Smarty

Ajouter un commentaire

Vous devez vous être connecté pour poster des commentaires