Carnet Web de Bastien Jaillot

Drupal snippet 1 : avoir un même template pour tout une catégorie

Note publiée le .

En Drupal, le module de gestion des catégories s'appelle taxonomy et ça se gère à grands coups de vocabulaire et de termes. Je suis en train de faire un site où tous les articles (nodes) sont obligatoirement rangés dans des catégories. De plus chaque partie du site est censé avoir un thème personnalisé.

A partir de page.tpl.php de votre thème actuel, créez-vous les fichiers pour les taxonomy qui vont bien, par exemple :

Correspondants aux trois premières catégories. Chaque fichier a des spécifités : des choses qui apparaissent d'autres qui disparaissent et des fichiers css différents.

Dans le fichier template.php du répertoire de votre thème (s'il n'existe pas, créez le), ajoutez ou adaptez ce bout de code :

function _phptemplate_variables($hook, $vars = array()) {
	switch ($hook) {
		case 'page':
			// Poour gerer dynamiquement le template par terme
 			// merci : http://www.nicklewis.org/node/825
			$node_taxonomy_object = $vars['node']->taxonomy;
			if ($node_taxonomy_object) 
			{
				foreach($node_taxonomy_object as $term) 
				{
					$suggestions = "page-taxonomy-term-".$term->tid;
				}
				$vars['template_files'] = $suggestions;
			}
  			break;
    } 
    return $vars;
}

Et il viendra tout seul chercher les bons tempates.