Quelques balises Dotclear2 : les balises "boucle"
Par ephase le lundi, novembre 12 2007, 02:50 :: Linuxeries :: Lien permanent
Après avoir vu quelques balises "en ligne", nous allons nous attarder sur celles de type "boucles" et "test" pour la création des pages dotclear 2. Ces balises vont servir pour l'affichage d'une liste de billet, de commentaires et bien d'autres choses. Tout comme le précédent article, celui-ci évoluera au fur et à mesure de mes découvertes... Cette documentation n'est pas exempte d'erreur, en effet, la plupart de éléments on été trouvé par déduction en étudiant des thèmes existant. Si vous découvrez des erreurs, omissions ou si vous voulez tout simplement compéter ce billet, n'hésitez pas à m'en faire part.
Vous trouverez ici mon article précédent sur les balises de type "en ligne".
Utilisation de ces balises
Les balises "boucles" servent a exécuter des actions un certain nombre de fois, à la manière d'un boucle for en php. Pour la plupart de ces boucles, vous pouvez créer une entête et un pied qui ne seront exécutés qu'au début et à la fin de notre boucle. Prenons un exemple concret pour illustrer ces propos :
<tpl:notreBoucle>
<tpl:notreBoucle Entete>
Afficher "Début "
</tpl:notreBoucle Entete>
Afficher "coucou N°{{tpl:boucleNumero}}"
<tpl:notreBoucle piedPage>
Afficher " Fin de notre boucle"
</tpl:notreBoucle piedPage>
</tpl:notreBoucle>
Donnera alors (imaginons que notreBoucle renvoie 3 éléments pour une boucle "article", 3 seraient affichés) :
Début --- coucou N°1 coucou N°2 coucou N°3 --- Fin de notre Boucle
Les balises "test" servent à exécuter des action suivant une conditions comme par exemple <si paramètre> Commandes <fin si>.
Liste des catégories
<tpl:Categories> ... </tpl:Categories> : Exécute les instruction entres ces deux balises pour toute les catégories utilisé par notre blog. Pour afficher la liste des catégories utilisées par notre blog sous forme d'une liste, voila ce que nous ferions :
<ul>
<tpl:Categories>
<li><a href="{{tpl:CategoryURL}}">{{tpl:CategoryTitle encode_html="1"}}</a></li>
</tpl:Categories>
</ul>
Liste des Billets
<tpl:Entries> ... </tpl:Entries> : Liste les billets du blog. Par défaut, dotclear liste des 20 derniers billet (vous pouvez changer ce paramètres dans l'interface d'administration). Cette boucle s'utilise dans toutes les pages sauf post.html (affichage d'un billet seul). Cette boucle peux prendre plusieurs paramètres :
<tpl:Entries lastn="10"> : Affiche les 10 derniers billets du blog, remplacez 10 par le nombre de billets désirés.<tpl:Entries category="Blabla, Tata">: N'affiche que les billets de ou des catégories citée(s) (séparées par des virgules), ici Blabla et Tata. Vous pouvez spécifier les catégories à ne pas afficher grâce à un ! suivi de la catégorie a ne pas afficher :!Macatégoriepar exemple.<tpl:Entries author="E-PhasE">: N'affiche que les billets du (des) auteur(s) cité(s), fonctionne comme pour le paramètres category.<tpl:Entries sortby="author">: Définis la méthode de tri pour l'affichage des billets, les possibilités sontauthor(par auteur),date(par date),selected(??) ettitle(par titre).<tpl:Entries order="asc">: Définis l'ordre de tri des billets,ascpour croissant etdescpour décroissant.- <
tpl:Entries no_content="1">: Ne s'occupe pas des contenus des billets lorsque ce paramètre est à 1, par défaut il est à 0. On utilise se paramètre pour, par exemple pour faire une liste des billets avec juste les titres (sans les contenus).
<tpl:EntryIf extended="1"> ... </tpl:EntryIf> : La première "condition" de ce petit billet, exécute les actions entres ces deux balises si le billet en cours contient un chapeau plus un contenu. S'utilise dans toutes les page, et de façon autonome (sans la boucle <tpl:Entries>...) dans la page post.html.
<tpl:EntryIf extended="0"> ... </tpl:EntryIf> : à l'inverse, exécutes les actions entre ces balises si le billet n'a pas de chapeau (juste un contenu). S'utilise dans toutes les page, et de façon autonome (sans la boucle <tpl:Entries>...) dans la page post.html.
L'entête de la liste des billets est définis avec la balise <tpl:EntriesHeader> .. .</tpl:EntriesHeader> et le pied de page avec <tpl:EntriesFooter> .. .</tpl:EntriesFooter>.
Prenons un exemple pour illustrer tout ceci : affichons les 10 derniers billet de la catégorie "news" classé par date et par ordre croissant, seulement le chapeau s'il y en a un, sinon le billet entier :
<tpl:Entries category="news" sortby="date" order="asc">
<tpl:EntriesHeader>
<p class="post-header"> Liste des news de ce blog : </p>
</tpl:EntiesHeader>
<tpl:EntryIf extended="1">
<div class="post">{{tpl:EntryExcerpt}}</div>
</tpl:EntryIf>
<tpl:EntryIf extended="0">
<div class="post">{{tpl:EntryContent}}</div>
</tpl:EntryIf>
<tpl:EntriesFooter>
<p class="post-footer"> Et voilà la jolie liste</p>
</tpl:EntriesFooter>
</tpl:Entries>
Liste des commentaires
La liste des commentaire se fait principalement dans le fichier post.html, mais libre a vous de le faire autre part (dernier commentaire affiché dans la liste des billets par exemples).
<tpl:EntryIf show_comments="1"> ... </tpl:Entryif> : exécute les commandes entre ces deux balises s'il existe des commentaires pour le billet en cours.
<tpl:Comments> ... </tpl:Comments> : les commandes entres ces deux balises seront exécutées autant de fois qu'il y a de commentaires pour le billet en cours.
l'entête des commentaires se défini grâce aux balises <tpl:CommentsHeader> .. </tpl:CommentHeader>, le pied avec <tpl:CommentsFooder> .. </tpl:CommentFooder>.
Pour exemples, affichons les commentaires relatif à un billet dans notre fichier post.html :
<tpl:EntryIf show_comments="1">
<div id="comments">
<tpl:Comments>
<tpl:CommentsHeader>
<p class="comments-header">{{tpl:Lang Comments}}</p>
</tpl:CommentsHeader>
<p id="c{{tpl:CommentID}}" class=c-details">{{tpl:CommentDate}}, {{tpl:lang By}} {{tpl:CommentAuthorLink}}</p>
<p class="comment">{{tpl:CommentContent}}</p>
<tpl:CommentsFooter>
<p class="comments-footer">Merci pour ces commentaires</p>
</tpl:CommentsFooter>
</tpl:Comments>
</div>
</tpl:EntryIf>
Liste des rétroliens
La liste des rétroliens s'utilise de la même façon que la liste des commentaires.
<tpl:EntryIf show_pings="1"> ... </tpl:EntryIf> : n'exécute les commandes entres ces deux lignes que s'il existe des rétroliens pour le billet en cour.
<tpl:Pings> ... </tpl:Pings> : Les commandes entres ces deux balises seront exécutées autant de fois qu'il y a de rétroliens pour le billet en cours.
l'entête des commentaires se défini grâce aux balises <tpl:PingsHeader> .. </tpl:PingsHeader>, le pied avec <tpl:PingsFooter> ... </tpl:PingsFooter>.
Pour l'exemple, affichons la liste des rétroliens pour un billet :
<tpl:EntryIf show_pings="1">
<div id="pings">
<tpl:Pings>
<tpl:PingsHeader>
<p class="p-header">Même sujet, autre blogs : </p>
</tpl:PingsHeader>
<p id="ctpl:PingID
" class="p-details">{{tpl:PingDate}}, {{tpl:lang by}} {{tpl:PingBlogName encode_html="1"}}</p>
<p class="ping"><a href="{{tpl:PingAuthorURL}}" {{tpl:PingNoFollow}}>{{tpl:PingTitle encode_html="1"}}</a><br/>
{{tpl:PingContent}}</p>
<tpl:PingsFooter>
</tpl:PingFooter>
</tpl:Pings>
</div>
</tpl:EntryIf>
Commentaires
yep, bien utile pour moi ton billet
cheers
Bonjour Bernard
Je suis heureux que ce billet serve à quelqu'un... Si tu aimerais voir apparaître d'autres choses dans celui-ci ou dans son grand frère sur les balises "en ligne", n'hésite pas a me le faire savoir...
Yorick
Bjr
merci pourn ce billet fort intéressant
il y a cependan quelques points obscurs : imaginons que notreboucle compte 3 elements ... qu'entend tu par là ? blonne continuation 
bonsoir News, et désolé pour le retard de ma réponse...
J'ai modifié le paragraphe en question pour faciliter la lecture, en espérant que se soir suffisant...
Yorick
toujours ontéressant tes billets
"vous pouvez changer ce parametres dans l'interface d'administration" : ça m'a quelque peru fait sourire
bone continuation !
Génialement clair. Super pour compléter le thème : GRIDSEVEN au niveau de la barre de navigation qui propose les liens vers les categories mais "en dur'. Maintenant, c'est dynamique ! Merci infiniment.
Bonjour Vince et Merci pour ce petit commentaire!
Bjr
merci pour ce billlet fort intéressant
il y a cependant qeulques points obscurs : vous pouvez changer ce parametres dans l'interface d'administration ... qu'entendsv tu par là ? bonne cnotinuation 