Préambule

Il est conseillé de lire ou relire ce billet avant de commencer.

Le marqueur IfModeration

Pour pouvoir en disposer dans votre thème, il vous faut copier/coller à la fin du fichier _public.php ceci :

$core->tpl->addBlock('IfModeration',array('tplMrvb02','IfModeration'));

class tplMrvb02
{
  public static function IfModeration($attr,$content)
  {
    $is = isset($attr['is']) ? trim($attr['is']) : '1';
    if (version_compare(DC_VERSION,'2.2-alpha','>=')) {
      $p = 'if ($core->blog->settings->system->comments_pub != \'1\') {';
      if ($is == '0') {
        $p = 'if ($core->blog->settings->system->comments_pub == \'1\') {';
      }
    } else {
      $p = 'if ($core->blog->settings->comments_pub != \'1\') {';
      if ($is == '0') {
        $p = 'if ($core->blog->settings->comments_pub == \'1\') {';
      }
    }
    return
    '<?php '.$p.' ?>'.
    $content.
    '<?php }; ?>';
  }

}

Il ne reste plus qu'à enregistrer le fichier. Vous venez de créer une nouvelle classe tplMrvb02 que vous avez enrichie du marqueur IfModeration.

Comment l'utiliser

Pour ajouter du code html conditionné par la présence ou pas d'une modération des commentaires, il vous suffit d'insérer dans le fichier post.html (ou page.html, ou... etc...) du thème...

  • Si modération (is="1" par défaut) :
    <tpl:IfModeration>
    	(...)
    </tpl:IfModeration>
  • Si pas de modération :
    <tpl:IfModeration is="0">
    	(...)
    </tpl:IfModeration>

Où "(...)" sera remplacé par le html que vous souhaitez voir pris en compte.

Exemples

  1. Afficher "OUI" si modération des commentaires :
    <tpl:IfModeration><p class="warning">OUI</p></tpl:IfModeration>
  2. Afficher "NON" si pas de modération des commentaires :
    <tpl:IfModeration is="0"><p class="warning">NON</p></tpl:IfModeration>
  3. En action sur un de mes blogs :
    message sur fond orange en dessous de la zone de saisie d'un nouveau commentaire.

Remarque

Ce marqueur fait 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.