Préambule

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

Le marqueur BlogID_CSS

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

$core->tpl->addValue('BlogID_CSS',array('tplMrvb01','BlogID_CSS'));

class tplMrvb01
{
	public static function BlogID_CSS($attr)
	{
		$b = isset($attr['prefix']) ? $attr['prefix'] : 'blog_';
		$p = "<?php\n".
		'if (version_compare(DC_VERSION,\'2.2-alpha\',\'>=\')) {'.
		'$f = $core->blog->themes_path."/".$core->blog->settings->system->theme;'."\n".
		'$t = $core->blog->settings->system->themes_url."/".$core->blog->settings->system->theme."/";'.
		'} else {'.
		'$f = $core->blog->themes_path."/".$core->blog->settings->theme;'."\n".
		'$t = $core->blog->settings->themes_url."/".$core->blog->settings->theme."/";'.
		'}'."\n".
		'if (file_exists($f."/'.$b.'".$core->blog->id.".css")) {echo (\'<link rel="stylesheet" type="text/css" href="\'.$t.\''.$b.'\'.$core->blog->id.\'.css" media="screen" />\');}'.
		"\n?>\n";
		return $p;
	}
}

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

Comment l'utiliser

Pour ajouter un lien vers un fichier CSS contenant des styles spécifique à un blog, il vous suffit d'insérer dans le fichier _head.html du thème ceci :

{{tpl:BlogID_CSS}}

En coulisse

Si un fichier CSS de nom blog_XXX.css (où XXX est l'ID du blog) est présent dans le répertoire de votre thème, il sera pris en compte grâce à l'insertion automatique, à la place du marqueur, de cette ligne :

<link rel="stylesheet" type="text/css" href="/mesthemes/montheme/blog_default.css" media="screen" />.

C'est un exemple où "mesthemes" est le répertoire des thèmes, "montheme", le thème actif et "default", l'ID du blog. Si le fichier n'existe pas, le marqueur est simplement ignoré.

Paramètre optionnel

Vous pouvez souhaiter utiliser un autre préfixe que "blog_" (qui est le préfixe par défaut). Il suffit de remplacer.

{{tpl:BlogID_CSS}}

par

{{tpl:BlogID_CSS prefix="toto"}}

si vous avez appelé votre fichier totoXXX.css.

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.