Préambule

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

Le marqueur IfBlogID

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

$core->tpl->addBlock('IfBlogID',array('tplMrvb03','IfBlogID'));

class tplMrvb03
{
  public static function IfBlogID($attr,$content)
  {
    $is = isset($attr['is']) ? trim($attr['is']) : '';
    $no = isset($attr['isnot']) ? trim($attr['isnot']) : '';
    if (strlen($is) > 0) {
      $p = '$blogs = explode(\',\',\''.$is.'\'); $blogs = str_replace(\' \',\'\',$blogs); if (in_array($core->blog->id, $blogs)) {';
      return
      '<?php '.$p.' ?>'.
      $content.
      '<?php } ?>';
    } else {
      if (strlen($no) > 0) {
        $p = '$blogs = explode(\',\',\''.$no.'\'); $blogs = str_replace(\' \',\'\',$blogs); if (!(in_array($core->blog->id, $blogs))) {';
        return
        '<?php '.$p.' ?>'.
        $content.
        '<?php } ?>';
      } else {
        return $content;
      }
    }
  }
}

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

Comment l'utiliser

Pour ajouter du code html dans un fichier template du thème, il vous suffit d'insérer à l'endroit que vous souhaitez...

<tpl:IfBlogID is="x,y,z">
	(...)
</tpl:IfBlogID>

ou

<tpl:IfBlogID isnot="x,y,z">
	(...)
</tpl:IfBlogID>

"is" et "isnot" sont des chaînes de caractères pouvant contenir une liste d'ID de blogs séparés par des virgules.

  • Si l'ID du blog est présent dans "is", affiche ce qui est placé entre <tpl:IfBlogID> et </tpl:IfBlogID>.
  • Si "is" est absent ou vide et si l'ID du blog est présent dans "isnot", n'affiche pas ce qui est placé entre <tpl:IfBlogID> et </tpl:IfBlogID>.
  • Si "is" et "isnot" sont absents ou vides, affiche ce qui est placé entre <tpl:IfBlogID> et </tpl:IfBlogID>.

Il est impossible (et illogique) d'avoir dans le même <tpl:IfBlogID> un paramètre "is" et un paramètre "isnot". "is" est prioritaire sur "isnot". Par contre on peut tout à fait utiliser successivement deux blocs selon le principe "SI", "SINON" (voir exemple n°3).

Exemples

  1. Afficher "Blog principal" uniquement si le blog a pour ID "default" :
    <tpl:IfBlogID is="default"><p>Blog principal</p></tpl:IfBlogID>
  2. Afficher "Autre blog" uniquement si le blog n'a pas pour ID "default" :
    <tpl:IfBlogID isnot="default"><p>Autre blog</p></tpl:IfBlogID>
  3. Afficher "Oui" si le blog a pour ID "default" et "Non" pour les autres blogs :
    <tpl:IfBlogID is="default"><p>Oui</p></tpl:IfBlogID>
    <tpl:IfBlogID isnot="default"><p>Non</p></tpl:IfBlogID>

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.