logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builder❗

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

❗Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri

Inserire un blocco in qualsiasi template (inserimento di un blocco Drupal in un template)

11/10/2025, by Ivan

Drupal 8

Nel template Twig non è possibile richiamare codice PHP, quindi è necessario passare il blocco già pronto al template. Se devi passare una variabile a un template di tipo nodo, puoi utilizzare la funzione themename_preprocess_node() nel tema; per il template della pagina, invece, themename_preprocess_page(). Passi la variabile al template Twig e poi la stampi direttamente al suo interno.

Blocchi creati tramite l’interfaccia di amministrazione

$block = \Drupal\block\Entity\Block::load('your_block_id');
$variables['block_output'] = \Drupal::entityTypeManager()
  ->getViewBuilder('block')
  ->view($block);

Per la funzione themename_preprocess_node() (il preprocess del template del nodo), puoi visualizzare il blocco in questo modo:

function themename_preprocess_node(&$variables) {
  $block = \Drupal\block\Entity\Block::load('your_block_id');
  $variables['block_output'] = \Drupal::entityTypeManager()
    ->getViewBuilder('block')
    ->view($block);
}

Nel template node.html.twig puoi ora mostrare il blocco così:

{{ block_output }}

Blocchi creati tramite plugin

Questi blocchi possono essere visualizzati nello stesso modo di quelli creati tramite l’interfaccia amministrativa, ma il codice da usare è leggermente diverso:

$block_manager = \Drupal::service('plugin.manager.block');
// Puoi definire qui le impostazioni del blocco.
$config = [];
$plugin_block = $block_manager->createInstance('system_breadcrumb_block', $config);
// Alcuni blocchi possono avere restrizioni di accesso.
$access_result = $block_plugin->access(\Drupal::currentUser());
// Restituisce un array vuoto se l’accesso è negato.
if ($access_result->isForbidden()) {
  return [];
}
$render = $plugin_block->build();
// È possibile aggiungere tag o contesti di cache qui.
// Puoi anche aggiungerli nei metodi render(), ::getCacheTags, ::getCacheContexts.
return $render;

Lo stesso codice senza commenti:

$block_manager = \Drupal::service('plugin.manager.block');
$config = [];
$plugin_block = $block_manager->createInstance('system_breadcrumb_block', $config);
$access_result = $block_plugin->access(\Drupal::currentUser());
if ($access_result->isForbidden()) {
  return [];
}
$render = $plugin_block->build();
return $render;

Drupal 7

In Drupal 7 la funzione è simile, ma con parametri leggermente diversi: invece dei due parametri block e view, si usa un solo block_view:

print render(module_invoke('block', 'block_view', '12'));

Per inserire un blocco di tipo Views, si scrive così:

print render(module_invoke('views', 'block_view', 'feedbacks-block'));

In questo modo, in Drupal 7 inseriamo un blocco View; nota che nella delta del primo blocco non c’è un numero, ma scriviamo semplicemente feedbacks-block.

Drupal 6

Per inserire un blocco nel punto desiderato, usa la funzione module_invoke():

$block = module_invoke('views', 'block', 'view', 'block_name');
print $block['content'];

Ad esempio, per inserire un blocco creato tramite l’interfaccia amministrativa, usa il seguente codice:

$block = module_invoke('block', 'block', 'view', 12);
print $block['content'];

Dove 12 è l’ID (delta) del blocco.

Se vuoi inserire un blocco di tipo Views, scrivilo così:

$block = module_invoke('views', 'block', 'view', 'feedbacks-block_1');
print $block['content'];

Dove feedbacks-block_1 è il nome del blocco nella View: feedbacks è il nome della View e block_1 è il nome del display all’interno della View.