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