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