Je continue ma petite série sur les templates utilisés pour les thèmes de Dotclear 2. Je vous avais parlé dans ce premier billet des deux formes de balises spécifiques aux templates :

  • celles qui sont sous la forme {{tpl:…}}
  • celles qui sont sous la forme <tpl:…> et </tpl:…>

Ces balises sont remplacées par Dotclear 2 par des instructions PHP qui seront ensuite traitées par le serveur.

La première forme est principalement utilisée pour générer du contenu comme par exemple l'affichage de la description du blog dans l'entête avec la balise suivante :

{{tpl:BlogDescription}}

Que va faire Dotclear 2 avec cette balise ? Et bien il va simplement la remplacer par le code PHP suivant :

<?php echo context::global_filter($core->blog->desc,0,0,0,0,0); ?>

Ensuite le serveur interprètera cette instruction qui sert à récupérer la description du blog dans la base de donnée et à l'afficher[1].

La deuxième forme, composée de deux balises, une ouvrante (<tpl:…>) et une fermante (</tpl:…>), permet principalement de traiter un contenu HTML[2] seulement si une condition est remplie (balise de test) ou autant de fois que nécessaire (balise de boucle).

Deux exemples, un pour pour chaque type :

Imaginons que je souhaite afficher un texte uniquement si on se trouve sur la page numéro 1 du blog et pas sur les suivantes. Je vais utiliser le code suivant dans mon thème :

<tpl:PaginationIf start="1">
  <p>Un joli texte affiché uniquement sur la première page.</p>
</tpl:PaginationIf>

La première balise permet de tester une condition, ici Est-on au début de la pagination, c'est-à-dire sur la page 1 ?. Ensuite nous trouvons le contenu qui sera traité uniquement si la condition est remplie, puis une balise qui indique la fin de ce qui est dépendant de la condition testée.

Imaginons maintenant que je souhaite afficher les 10 derniers billets d'une catégorie. Je vais utiliser le code suivant :

<tpl:Entries category="Flash" lastn="10">
  …
  <!-- affichage du contenu du billet (titre, introduction, …) -->
  …
</tpl:Entries>

La première balise permet de définir ce qu'on veut récupérer, ici les 10 derniers billets (lastn="10") de la catégorie Flash (category="Flash"). Puis pour chacun de ces 10 billets, tout ce qui se trouve jusqu'à la balise de fin (</tpl:Entries>) sera répété.

J'espère que c'est suffisamment clair pour tout le monde. Si vous avez tout compris jusqu'ici et bien vous savez tout (ou presque) du système de template de Dotclear 2.

Notes

[1] L'instruction PHP echo est utilisée pour afficher quelque chose dans la page que l'on est en train de visualiser.

[2] Ce contenu peut également comporter des balises templates, des deux formes.