Esistono vari modi per inserire un blocco all’interno di un template.
Quello più corretto è di creare una regione, e posizionare il blocco al suo interno (“admin/build/block/list”).
Ma se abbiamo la necessità di farlo via codice, basta utilizzare la funzione module_invoke.
1 2 |
$block = module_invoke($nomeModulo, 'block', 'view',$delta); print $block['content']; |
dove $nomeModulo è il nome del modulo e $delta è il blocco che si vuole caricare in $block.
Il valore di $delta è possibile individuarlo nella lista dei blocchi (admin/build/block/list), ovvero è l’ultimo valore del link di configurazione.
Ecco alcuni esempi :
Mostra il bannerino di drupal
1 2 3 |
// Link : /admin/build/block/configure/system/0 $block = module_invoke('system', 'block', 'view','0'); print $block['content']; |
Mostra i primary link
1 2 3 |
// Link : /admin/build/block/configure/menu/primary-links $block = module_invoke('menu', 'block', 'view','primary-links'); print $block['content']; |
Mostra utenti online
1 2 3 |
// Link : /admin/build/block/configure/user/3 $block = module_invoke('user', 'block', 'view','3'); print $block['content']; |
Se abbiamo bisogno del titolo del blocco è presente nella variabile : $block[‘subject’];
Nota:
$block[‘content’] contiene il contenuto del blocco, senza che esso venga manipolato dal tema (es.block.tpl.php).
Se vogliamo applicare il tema al blocco, per avere lo stesso effetto della renderizzazione che effettua drupal.
Bisogna usare il seguente codice:
1 2 |
$block = (object) module_invoke($nomeModulo, 'block', 'view',$delta); print theme('block', $block); |