Templates et catégories sous Dotclear 2
Par Deeder le samedi 25 novembre 2006, 12:10 - Geekeries - Lien permanent
Les templates présents dans la nouvelle version de Dotclear sont très pratiques et remplacent avantageusement le squelette de l'ancienne version. La modularité qui en découle permet de laisser libre cours à son imagination pour créer une mise en page à son image. Suite à un commentaire de cYril, je vais vous expliquer comment modifier vos templates pour pouvoir créer un affichage relatif à la catégorie du billet publié.
Sur ce blog, vous aurez surement remarqué le post-it qui se trouve en haut à droite, complètement dissocié de l'affichage des autres billets et autres catégories. Il est désormais classique d'avoir ce genre de chose sur un blog, de nombreux outils externes le permettant. Cependant, l'avantage ici est que le fil RSS reste le même que celui des billets. Si l'on veut afficher une rubrique particulière dans une colonne, ou que sais-je encore, le principe est le même.
Le principe est d'utiliser les fonctionnalités du système de templates, qui permet d'ajouter des paramètres via une syntaxe similaire à celle des attributs (X)HTML. Il faut tout d'abord créer une catégorie particulière dont on veut dissocier l'affichage (dans notre cas, la catégorie "Post-it" et noter l'url qu'on lui dédie (crée automatiquement ou non). A partir de là, il faut repérer l'élément suivant dans home.tpl :
<tpl:Entries> [...] </tpl:Entries>
Ce code, marque l'insertion des entrées, à savoir les billets, et les informations les concernant, qu'il s'agisse du nombre de trackback, de commentaires, d'un éventuel fichier joint, etc. On lui rajoutera l'attribut category qui pourra prendre en valeur l'url de la catégorie à afficher. Si l'on ne veut pas afficher une catégorie (pour l'exclure du flux d'informations), alors il suffira de rajouter un point d'exclamation ! devant l'url en question. Ce qui donnera dans notre cas :
<tpl:Entries category="!postit"> [...] </tpl:Entries>
Ensuite, pour afficher la (ou les) catégorie(s) exclue(s) à un autre endroit de la page, il suffira d'y copier et coller la portion de code délimitée par l'élément <tpl:Entries> à l'endroit souhaité. Il ne reste plus alors qu'à modifier la valeur de l'attribut category pour n'afficher que la catégorie en question (il ne faut pas mettre de "!").[1]
Reste un dernier point à définir, et non des mondres, le nombre de billets à afficher dans cette liste de billets. Pour ma part, je veux n'afficher qu'un seul post-it à la fois. Il suffit de rajouter l'attribut lastn, avec pour valeur le nombre de billets à afficher dans le listing. Soit le code suivant :
<tpl:Entries category="postit" lastn="1" > [...] </tpl:Entries>
Libre à vous ensuite de modifier le contenu de cet élément à votre guise pour modifier la mise en page de cette catégorie. Vous pouvez supprimer la date par exemple, ou le nombre de trackacks et commentaires comme bon vous semble. La CSS apportera une touche finale à tout cela en différenciant visuellement les deux affichages. 
Notes
[1] Pour afficher plusieurs catégories, il suffit de séparer leurs urls par une virgule.


Commentaires
merci pour cette réponse concise et rapide! Je vais essayer de suite.
Bonne soirée (ou bonne nuit).
Génial
Merci pour ces infos.
Y a t il d'autres parametres dispo dans les appels de tpl?
Je cherche à limiter le nombre de catégories retournées dans un menu de catégories. Comme ça, les X premières catégories iront dans le menu horizontal, et les autres non.
Des conseils?
Il y en a surement d'autres que je ne connais pas encore. A priori, impossible de faire une sorte de IF/ELSE comme tu désires, il faudrait lister les catégories une à une. Il est possible de faire ce que j'ai décri ci-dessus en mettant plusieurs catégories en valeur de l'attribut
category.Bonnes explications claires et concises, ça m'a bien aidé, merci beaucoup
Fil des commentaires de ce billet