Le marqueur EntryNotes permet d'afficher le contenu du champ Notes (champ mis à disposition du rédacteur d'un billet par Dotclear mais ne s'affichant normalement pas dans le blog).
Le marqueur IfEntryNotes teste la présence dans ce champ "Notes" d'un texte dont le premier caractère est "<" ou pas.
Ce billet vous indique comment les ajouter à votre thème, si vous y êtes autorisé.
Préambule
Il est conseillé de lire ou relire ce billet avant de commencer.
Les marqueurs EntryNotes et IfEntryNotes
Pour pouvoir en disposer dans votre thème, il vous faut copier/coller à la fin du fichier _public.php ceci :
$core->tpl->addValue('EntryNotes',array('tplMrvb05','EntryNotes')); $core->tpl->addBlock('IfEntryNotes',array('tplMrvb05','IfEntryNotes')); class tplMrvb05 { public static function EntryNotes() { return('<?php echo($_ctx->posts->post_notes); ?>'); } public static function IfEntryNotes($attr,$content) { $is = isset($attr['is']) ? trim($attr['is']) : '1'; if ($is == '1') { return '<?php $rs = $_ctx->posts->post_notes; if ((strlen($rs) > 0) && (strpos($rs, \'<\') == 0)){ ?>'. $content. '<?php } ?>'; } else { return '<?php $rs = $_ctx->posts->post_notes; if ((strlen($rs) == 0) || (strpos($rs, \'<\') > 0)){ ?>'. $content. '<?php } ?>'; } } }
Il ne reste plus qu'à enregistrer le fichier. Vous venez de créer une nouvelle classe tplMrvb05 que vous avez enrichie des marqueurs EntryNotes et IfEntryNotes.
Comment utiliser EntryNotes
Pour afficher le contenu du champ notes, il vous suffit de placer
{{tpl:EntryNotes}}
à l'endroit voulu dans le fichier post.html et/ou le fichier page.html de votre thème ou dans une boucle de type <tpl:Entries>...</tpl:Entries> présente dans les fichiers du thème affichant tout ou partie du contenu des billets comme home.html, category.html... etc...
Comment utiliser IfEntryNotes
Si vous souhaitez effectuer une opération uniquement si le premier caractère du champ "Notes" est "<" (par défaut), vous utiliserez le marqueur IfEntryNotes comme ceci :
<tpl:IfEntryNotes> ... </tpl:IfEntryNotes>
Le marqueur IfEntryNotes accepte un paramètre optionnel : <tpl:IfEntryNotes is="x"> permettant de tester la présence dans le champ "Notes" d'un texte dont le premier caractère est "<" (is absent ou is="1") ou pas (is="0").
Exemple : afficher "OUI" si le premier caractère est "<" :
<tpl:IfEntryNotes> <p>OUI</p> </tpl:IfEntryNotes>
ou
<tpl:IfEntryNotes is="1"> <p>OUI</p> </tpl:IfEntryNotes>
Exemple : afficher "NON" si le premier caractère est différent de "<" :
<tpl:IfEntryNotes is="0"> <p>NON</p> </tpl:IfEntryNotes>
Remarque
Ces marqueurs font partie d'une série de marqueurs de template que j'ai écrits ex-nihilo ou inspiré par d'autres développeurs. Je souhaite faire en sorte que chaque marqueur, chaque billet qui le présente soit autonome. Comprendre : pas besoin d'installer les autres marqueurs pour que ça fonctionne. Pour ce faire et pour simplifier le copier/coller, chaque marqueur se voit déclaré dans sa propre classe tplMrvb01, tplMrvb02, etc...
Mise à jour du 31/01/2015 :
il n'est pas/plus nécessaire d'avoir ?> en dernière ligne du fichier _public.php.
Mise à jour du 20/03/2016 :
Ce marqueur de template est également présent dans le fichier _public.php en téléchargement ici.
1. par brol, le samedi 31 janvier 2015 à 00h05 commentaire
A noter que sur les derniers thèmes, on ne met plus à la fin des fichiers php : ?>
2. par mirovinben, le samedi 31 janvier 2015 à 07h13 commentaire
C'est vrai.
Ce billet, comme les autres qui traitent de l'insertion de code dans le fichier _public.php, date d'avant les nouvelles consignes préconisées par nos sorcier du code Dotclear. Il serait bien que je fasse le tour de mes billets et modifie mes textes en conséquence. La météo du week-end s'annonce propice à ce genre d'inspection.
3. par mirovinben, le samedi 31 janvier 2015 à 08h56 commentaire
C'est fait...
(en espérant ne pas en avoir oublié dans un coin)