Créer de nouvelles régions (comme "en-tête", "barre de gauche"...) dans une page

Par défaut, Drupal propose 5 régions prédéfinies (en-tête, contenu, barre de gauche, barre de droite, et pied de page) dans lesquelles du contenu peut être affiché, chacune de ces régions correspondant à un emplacement sur la page. Vous n'aurez pas de mal à voir à quel emplacement chaque région correspond, les noms étant plutôt explicites.

Ces régions sont typiquement utilisées avec les blocs. En effet, lorsqu'on active un bloc dans Administrer » Construction du site » Blocs, on l'affecte à une région. Mais comment afficher un bloc ailleurs que dans une des régions prédéfinies ? Peut-on créer ses propres régions ?

La réponse est oui ! Suivez le guide...

1) Déclarer les nouvelles régions dans template.php

La première étape consiste à déclarer les nouvelles régions en créant une fonction appelée montheme_regions() dans le fichier template.php. Note : le fichier template.php est un simple fichier PHP que vous devez créer et enregistrer dans le répertoire de votre thème ; il sert à stocker les différentes personnalisations apportées à votre thème.

Voici une fonction qui déclare une nouvelle région appelée "feature article for the homepage" en plus des 5 régions par défaut de Drupal :
<?php
function montheme_regions() {
  return array(
    'left' => t('left sidebar'),
    'right' => t('right sidebar'),
    'content' => t('content'),
    'header' => t('header'),
    'footer' => t('footer'),
    'feature_article' => t('feature article for the homepage'),
  );
}
?>

Remarques :

  • Dans le nom de la fonction, il faudra remplacer "montheme" par le nom de votre thème, sinon ça ne marchera pas.
  • La fonction ne se contente pas d'ajouter une nouvelle région aux 5 régions par défaut (left, right, content, header, et footer) ; en fait, elle redéclare toutes les régions : les 5 par défaut + la nouvelle ; si vous oubliez de redéclarer certaines régions, elles disparaîtront.

2) Afficher les nouvelles régions dans page.tpl.php

Les nouvelles régions créées n'apparaissent pas automatiquement dans le thème en cours, il faut d'abord définir leur emplacement dans le code HTML de la page.

Pour cela, il faut copier le code suivant dans le fichier page.tpl.php de votre thème, à l'endroit où la région doit apparaître :

<div id="feature_article">
  <?php print $feature_article; ?>
</div>

NB. Il faudra remplacer "feature_article" par le nom de la région tel que vous l'avez défini à l'étape précédente.

3) Affecter du contenu à la nouvelle région

Par défaut, notre nouvelle région est vide, elle n'a donc aucune raison d'apparaître à l'écran.

Il faut donc se rendre dans Administrer » Construction du site » Blocs pour affecter un bloc à la nouvelle région.

Aller plus loin

Consultez Regions in PHPTemplate | drupal.org pour voir comment :

  • Afficher les régions directement dans un node, un bloc... plutôt que dans la page.
  • Affecter à une région du contenu qui ne vient pas d'un bloc.