Dans un précédent billet, on a vu comment présenter les billets d'une (ou plusieurs catégories) dans le contexte de l'affichage du billet seul ou du tri par catégorie.

Pour mes propres besoins, je souhaitais que la distinction puisse se faire dès la page d'accueil (les billets de la rubrique « Lu ailleurs » de mon blog perso). Et j'avais remarqué sur le blog de Zoé la couleur différente des liens selon la catégorie. Avec son aide, j'ai mis en place puis poussé un peu plus loin la méthode pour non seulement présenter différemment cette fameuse rubrique Lu ailleurs mais retirer sur ces billets la possibilité de laisser des commentaires et/ou trackbacks.

Tout cela peut se faire en modifiant uniquement la feuille de style et les fichiers list.php et post.php.

Comprendre...

Chaque billet est contenu dans une boîte <div class="post">, et cela quel que soit le contexte : accueil, billet seul, tri sur le mois ou la catégorie. Pour l'instant les posts ne sont « marqués » que par une classe commune à tous : "post". On en définit les styles avec .post dans style.css.

Conserver cette classe pour les éléments communs et ajouter une classe spécifique à chaque catégorie, voilà ce dont nous avons besoin. Et cela, Zoé peut le faire ! Alors nous aussi du coup.

... puis appliquer

Lors de la création d'une catégorie, une URL titre est créée également. A titre d'exemple, ici, l'URL titre de la catégorie Premiers Pas est Granddebut.[1]

Dans list.php, chercher la ligne :

<div class="post">

et la remplacer par :

<div class="post <?php print ('cat'.$news->f('cat_libelle_url'));?>">

Cette expression <?php print ('cat'.$news->f('cat_libelle_url'));?> va chercher l'URL titre de la rubrique à laquelle est affecté le billet et l'accole au préfixe cat (choix arbitraire, vous pouvez remplacer par ce que vous voulez). Dans l'exemple que je viens de donner, ce code sera donc interprété en : <div class="post catGranddebut">

C'est fini !

Il nen vous reste plus qu'à ouvrir votre feuille de styles et ajouter à la fin de celle-ci, par exemple :

.catGranddebut a {
         color : #ff6600;
}

Et désormais les liens de cette catégorie s'afficheront en orange dans la page d'accueil et tous les affichages en mode liste. Si vous souhaitez conserver la même couleur pour l'affichage du billet seul, vous procéderez au même remplacement dans post.php

Et autres fioritures

J'avais un cas particulier à gérer : supprimer les blocs post-info et post-info-co dans list.php et supprimer les blocs tracbacks et comments si et uniquement si le billet appartient à une catégorie précise (je continue avec l'exemple Premiers Pas).

De la même façon que précédemment, mais avec un préfixe différent (<?php print ('plouf'.$news->f('cat_libelle_url'));?>), j'introduis cette classe supplémentaire dans le fichier list.php aux <div class="post-info"> et <div class="post-info-co">.

Voici ces deux blocs munis d'une nouvelle classe :
<div class="post-info ploufGranddebut"> et <div class="post-info-co ploufGranddebut">

En prévision de leur suppression, j'ouvre également le fichier post.php et je remplace :

<div id="trackbacks">

par

<div id="trackbacks" class="<?php print ('plouf'.$news->f('cat_libelle_url'));?>">

En ajoutant maintenant dans style.css les lignes suivantes :

.ploufGranddebut {
        display : none;
}

Tous les éléments que je voulais supprimer ne s'affichent plus.

Ouf ! un petit café ne serait pas de refus maintenant !

Notes

[1] On le remarque par exemple lors du tri par catégorie, l'url devient www.kozlika.org/dotclear/?Granddebut