logo

Extra Block Types (EBT) - Nieuwe Layout Builder ervaringâť—

Extra Block Types (EBT) - gestileerde, aanpasbare bloktypes: Slideshows, Tabs, Cards, Accordions en vele andere. Ingebouwde instellingen voor achtergrond, DOM Box, javascript-plugins. Ervaar vandaag al de toekomst van layout building.

Demo EBT-modules Download EBT-modules

âť—Extra Paragraph Types (EPT) - Nieuwe Paragraphs ervaring

Extra Paragraph Types (EPT) - analoge op paragrafen gebaseerde set modules.

Demo EPT-modules Download EPT-modules

Scroll

Een blok invoegen in elk sjabloon (drupal insert block into template)

11/10/2025, by Ivan

Drupal 8

In een Twig-sjabloon kun je geen PHP-code aanroepen, daarom moet je het blok al voorbereid naar de sjabloon sturen. Als je een variabele naar een node-sjabloon wilt doorgeven, kun je de functie themename_preprocess_node() in je thema gebruiken; voor een pagina-sjabloon gebruik je themename_preprocess_page(). Je geeft de variabele door aan de Twig-sjabloon, en daarin wordt ze weergegeven.

Blokken aangemaakt via de admin-interface

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

Voor de functie themename_preprocess_node() (de node-sjabloon) kan dit blok als volgt worden weergegeven:

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

In het sjabloon node.html.twig kun je het blok nu weergeven met:

{{ block_output }}

Blokken aangemaakt via plugins

Dergelijke blokken kunnen op dezelfde manier worden weergegeven als blokken uit de admin-interface, alleen is de code hiervoor iets anders:

$block_manager = \Drupal::service('plugin.manager.block');
// Je kunt hier je eigen configuratie voor het blok toevoegen.
$config = [];
$plugin_block = $block_manager->createInstance('system_breadcrumb_block', $config);
// Sommige blokken hebben toegangsrechten nodig.
$access_result = $block_plugin->access(\Drupal::currentUser());
// Geeft een lege array terug als er geen toegang is.
if ($access_result->isForbidden()) {
  return [];
}
$render = $plugin_block->build();
// Hier kun je eventueel cache-tags of contexten toevoegen.
// Je kunt ook cache-tags en contexten definiëren in de methoden render(), ::getCacheTags, ::getCacheContexts.
return $render;

Dezelfde code zonder opmerkingen:

$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

Voor Drupal 7 is de functie hetzelfde, maar de parameters zijn iets anders. In plaats van twee parameters block en view gebruiken we één: block_view.

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

Voor Views-blokken ziet de invoeging er zo uit:

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

Zo voegen we in Drupal 7 een Views-blok in. Let op dat in de delta voor het eerste blok het bloknummer ontbreekt — we schrijven gewoon feedbacks-block.

Drupal 6

Om een blok op een gewenste plaats in te voegen, gebruik je de functie module_invoke():

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

Als je een blok wilt invoegen dat via de admin-interface is aangemaakt, gebruik dan de volgende code:

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

Hier is 12 het bloknummer, oftewel de delta.

Als we een Views-blok willen invoegen, doen we dat als volgt:

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

Hier is feedbacks-block_1 de naam van het blok binnen de view, feedbacks de naam van de view zelf, en block_1 de naam van de display in die view.