Utente: Anonymous

La suddivisione in Regioni

Gli argomenti trattati fanno riferimento alla versione 5.x di Drupal

Funzioni principali:
phptemplate_regions()
drupal_set_content($region=NULL,$data=NULL)

I temi possono definire ed implementare un numero generico di regioni.
Le regioni sono essenzialmente contenitori di... contenuti.
Le regioni suddividono la pagina del browser in aree che costituiranno i limiti in cui visualizzare i contenuti stessi. Così, generalmente, tutti i temi hanno una regione per:

  • i contenuti dell’intestazione, header
  • due regioni per i contenuti dei menu laterali, sidebar-left e sidebar-right
  • una regione per i contenuti del fondo pagina, footer
  • una regione centrale, content

ed altre regioni che possono complicare notevolmente il layout del sito.

Definizione delle regioni

Le regioni sono definite mediante una funzione php che torna un array associativo contenente la codifica delle regioni e la loro descrizione utilizzata nella pagina di amministrazione dei blocchi.
La funzione è la seguente:

function phptemplate_regions() {
  return array(
       'left' => t('left sidebar'),
       'right' => t('right sidebar'),
       'content' => t('content'),
       'header' => t('header'),
       'footer' => t('footer')
  );
}

Il primo nome della regione diventa la regione di default per il posizionamento di blocchi nel caso in cui non sia dichiarata espressamente una regione.

Nel caso di PhpTemplate Engine la funzione phptemplate_regions() è contenuta nel file: miosito/themes/engines/phptemplate/phptemplate.engine.
Drupal prima di chiamare questa funzione , verifica se esiste una funzione analoga fornita nei file template del tema corrente e che si chiami miotema_regions().
Per cui, per personalizzare le regioni di un tema, bisogna definire la funzione miotema_regions() nel file template.php nella directory del tema.

function miotema_regions() {
  return array(
       'regione1' => t('regione1'),
       'regione2' => t('regione2'),
       'regione3' => t('regione3'),
       'header' => t('header'),
       'footer' => t('footer')
  );

Nel caso di .theme Engine la funzione è contenuta nel file del tema miotema.theme

Per riempire una regione è possibile utilizzare la funzione

function drupal_set_content($region = NULL, $data = NULL) {
  static $content = array();
  if (!is_null($region) && !is_null($data)) {
    $content[$region][] = $data;
  }
  return $content;
}

Es.: drupal_set_content('left', 'Hello there.')