Drupal 7 : Templates de thèmes fonction du type de contenu

On se pose souvent la question suivante dans Drupal : comment avoir une mise en place différente pour un type de contenu spécifique ?

Si par défaut, Drupal utilise différentes suggestions (cf https://drupal.org/node/1089656), telles que : node-type, node-id, page-front, il n'utilise pas en standard un modèle de page pour un type de contenu.

Pour rappel, un template intitulé page--front.tpl.php sera utilisé pour la page d'accueil (notez bien les 2 tirets).

Ceci peut cependant être mis en place, en ajoutant quelques lignes dans le fichier template.php du thème utilisé. Par exemple, si je veux utiliser un modèle spécifique pour le type de contenu moncontenu, on ajoute dans le fichier les lignes :

<?php
function MONTHEME_preprocess_page(&$vars, $hook) {
  if ($vars['node']->type == 'moncontenu') {
    $vars['theme_hook_suggestions'][] = 'page__moncontenu';
 }
}
?>

Le fichier modèle utilisé sera page--moncontenu.tpl.php.

Attention : notez bien que le nom du fichier contient des tirets '-' alors que le nom de la suggestion contient des caractères soulignés '_'.

 

Catégorie