Aggiungere una regione in un blocco con Drupal

Trucco per temi Drupal avanzati

In Drupal il layout di una pagina è suddiviso in regioni che formano una griglia nella quale appaiono i vari contenuti. Queste regioni sono gestite nel file page.tpl.php. Per particolari esigenze è possibile inserire ulteriori regioni anche nel template dei nodi (node.tpl.php).

Aggiungere una regione in un blocco con Drupal

Uno dei casi d'uso più comuni che richiede questo tipo di operazione è quando si ha la necessità di avere un blocco tra il contenuto del nodo stesso ed i commenti che lo seguono.

Definire la regione nel file .info

Per prima cosa si deve definire il nome della regione nel file .info del tema Drupal. In questo esempio aggiungeremo una regione di nome "regione_nel_nodo":

regions[regione_nel_nodo] = Nome esteso della regione

Aggiungere la regione nel file node.tpl.php

Dopo aver definito la regione si deve modificare il file node.tpl.php inserendo il codice per mostrarla. La sintassi è la stessa che si usa nel file page.tpl.php.

<?php if($regione_nel_nodo){ ?>
  <div class="regione_nel_nodo"><?php print $regione_nel_nodo; ?></div>
<?php } ?>

Definire la regione nel file template.php

A questo punto è necessario indicare al template del nodo che esiste una variabile che contiene una regione. Per fare ciò si deve modificare il file template.php ed aggiungere la seguente funzione (o modificandola se esiste già):

<?php
function nome_del_tema_preprocess_node(&$vars, $hook) {
  $vars['regione_nel_nodo'] = theme('blocks', 'regione_nel_nodo');
}

Rendere operativa la modifica

Il tema Drupal è stato aggiornato, potrebbe essere necessario svuotare la cache di Drupal e rigenerare il registro dei temi per rendere operative le modifiche effettuate. Per questa operazione è sufficiente svuotare la cache con drush:

drush cc

La cache di Drupal si può anche svuotare dalla pagina di ammiistrazione delle prestazioni del sito Drupal: /admin/settings/performance.