Pour étudier les blocks nous allons revenir sur le tutorial sur les templates. Reprenons le deuxième exemple. 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):
<?
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
?>
Et avec les blocks ?
Cet exemple utilisait 2 fichiers template pour afficher le tableau. Les blocks vont permettre de n’en utiliser qu’un seul, ce qui réduit le nombre de fichiers et simplifie parfois le travail. On crée donc tableau.tpl :
<table border="0" cellspacing="0" cellpadding="0" width="200">
<!-- BEGIN LIGNE --><tr>
<td>{ID} : {NOM}</td>
</tr><!-- END LIGNE -->
</table>
J’ai volontairement pris le même exemple très simple. Le block est la partie définie par les commentaires : <!-- BEGIN LIGNE -->...<!-- END LIGNE -->. Dans ce cas ce block s’appelle LIGNE. Ce block est équivalent au fichier ligne.tpl de l’exemple précédent, et remplit le même rôle : il sera répété autant de fois que l’on en aura besoin.
Une petite remarque à ce sujet : quand vous créez un commentaire avec Dreamweaver, il ne laisse jamais d’espace avant le texte, et en laisse toujours un après. Pour que le script fonctionne, il faut rajouter l’espace de début, sinon vous aurez toujours une erreur.
Voyons maintenant le script php (index.php) :
<?
include "template.inc";
$t=new template("."); // création du template
$t->set_file("tableau","tableau.tpl"); // on indique le fichier servant de modèle
$t->set_block("tableau","LIGNE","une_ligne"); // on définit le block
$tableau=array("Tarzan", "Jane","cheetah"); // les données qui serviront d'exemple
// on va afficher le tableau ligne par ligne
reset($tableau);
while (list($cle,$valeur)=each($tableau)) {
$t-> set_var(array(
"ID"=>$cle,
"NOM"=>$valeur
));
$t->parse("une_ligne","LIGNE",true); // on traite le block
}
$t->parse("MyOutput","tableau"); // on traite le reste de la page
$t->p("MyOutput"); // on affiche la page
?>
Le script est très ressemblant là encore, et produit le même résultat. Seulement on appelle plus qu’un seul fichier à l’aide de set_file(), et on définit le block avec la fonction set_var(). Sinon la démarche est la même, car à chaque passage dans la boucle on utilise la fonction parse() pour traiter le block.
Conclusion
L’utilisation des blocks plutôt que des fichiers templates séparés produit le même résultat, et ne complique pas plus le script. Souvent l’utilisation des blocks vous évitera seulement d’avoir plusieurs fichiers pour une même page. Je n’ai pas fait de test précis de rapidité entre les 2 méthodes, mais pour utiliser les 2 je ne vois pas de différence.
Télécharger les sources du tutorial
{ 2 comments… read them below or add one }
Merci pour cette rapide explication.
réalisation d’un template avec dreamweaver