Voici une nouvelle balise template semblable à la balise <tpl:EntryIf> de Dotclear. Dans cet exemple, nous voulons appliquer une mise en forme particulière à des titres de billets comportant certains mots déterminés.
Le code suivant doit être inséré dans le fichier _public.php de votre thème. :
$core->tpl->addBlock('EntryIfWordInTitle', array('tplEntryIfWordInTitle','EntryIfWordInTitle')); class tplEntryIfWordInTitle { public static function EntryIfWordInTitle($attr,$content) { return '<?php '. '$words = array("Federer","Santoro");'. 'foreach ($words as $word) :'. 'if (stripos($_ctx->posts->post_title,$word) !== false): ?>'. $content. '<?php '. 'break;'. 'endif;'. 'endforeach;'. 'unset($words); ?>'; } }
On utilise ici les noms de joueurs de tennis pour mettre en valeur ses billets. Vous pouvez bien entendu utiliser n’importe quels autres mots.
Ce code crée la balise
<tpl:EntryIfWordInTitle>[...]</tpl:EntryIfWordInTitle>
.
Elle sert à encadrer du code qui sera affiché seulement quand le titre du
billet contiendra Federer
ou Santoro
. Puisqu’on veut distinguer
les titres des billets, on va mettre la classe CSS distinguish
entre les balises nouvellement créées :
<h2 class="post-title<tpl:EntryIfWordInTitle> distinguish</tpl:EntryIfWordInTitle>"><a href="{{tpl:EntryURL}}">{{tpl:EntryTitle encode_html="1"}}</a></h2>
La classe distinguish
doit alors être définie dans la feuille
de style CSS, par exemple de la manière suivante :
h2.distinguish { font-weight: bold; }
pour un titre mis en gras[1] ou
h2.distinguish, h2.distinguish a { color: red; }
pour un titre en rouge[2].
Idée originale : Mathieu M. du forum Dotclear
Notes
[1] notons au passage que les navigateurs appliquent un gras par défaut sur les titres, si votre CSS n’a pas désactivé ce gras, vous ne verrez dans ce cas aucune différence
[2]
l’application sur h2.distinguish a
permet de prendre en compte le
lien sur le titre, car il y a souvent une couleur définie pour les liens
Commentaires