logo

Extra Block Types (EBT) - Neue Erfahrung im Layout Builder❗

Extra Block Types (EBT) - gestylte, anpassbare Blocktypen: Diashows, Registerkarten, Karten, Akkordeons und viele andere. Eingebaute Einstellungen für Hintergrund, DOM Box, Javascript Plugins. Erleben Sie die Zukunft der Layouterstellung schon heute.

Demo EBT-Module EBT-Module herunterladen

❗Extra Absatztypen (EPT) - Erfahrung mit neuen Absätzen

Extra Paragraph Types (EPT) - analoger, auf Absätzen basierender Satz von Modulen.

Demo EPT-Module EPT-Module herunterladen

Scroll

Einfügen eines Blocks in eine beliebige Template-Datei (Drupal Insert Block into Template)

26/05/2025, by Ivan

Drupal 8

Im Twig-Template kann kein PHP-Code ausgeführt werden, deshalb muss der fertige Block an das Template übergeben werden. Wenn Sie eine Variable an das Node-Template übergeben wollen, können Sie die Funktion themename_preprocess_node() im Theme verwenden, für das Page-Template themename_preprocess_page(). Dort übergeben Sie die Variable an das Twig-Template und geben sie dort aus.

Blöcke, die über das Admin-Interface erstellt wurden

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

Für die Funktion themename_preprocess_node() (Node-Template) kann der Block so ausgegeben werden:

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

Im Template node.html.twig kann der Block dann folgendermaßen ausgegeben werden:

{{ block_output }}

Blöcke, die als Plugins erstellt wurden

Diese Blöcke können ähnlich wie die über das Admin-Interface erstellten Blöcke ausgegeben werden, nur der Code für die Ausgabe ist etwas anders:

$block_manager = \Drupal::service('plugin.manager.block');
// Eigene Konfiguration für den Block kann hier gesetzt werden.
$config = [];
$plugin_block = $block_manager->createInstance('system_breadcrumb_block', $config);
// Manche Blöcke haben unterschiedliche Zugriffsrechte.
$access_result = $plugin_block->access(\Drupal::currentUser());
// Gibt ein leeres Array zurück, wenn kein Zugriff besteht.
if ($access_result->isForbidden()) {
  return [];
}
$render = $plugin_block->build();
// Hier können Cache-Tags oder Kontexte hinzugefügt werden.
// Auch möglich in den Methoden render(), getCacheTags(), getCacheContexts().
return $render;

Der gleiche Code ohne Kommentare:

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

Drupal 7

Für Drupal 7 ist die Funktion ähnlich, aber die Parameter sind etwas anders, statt zwei Parametern (block, view) verwendet man einen Parameter block_view:

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

Für Views sieht die Blockeinbindung so aus:

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

So binden wir in Drupal 7 einen Views-Block ein. Beachten Sie, dass in der Delta für den ersten Block keine Blocknummer mehr steht, sondern einfach feedbacks-block.

Drupal 6

Um einen Block an einer bestimmten Stelle einzufügen, verwenden Sie die Funktion module_invoke():

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

Wenn Sie beispielsweise einen über das Admin-Interface erstellten Block einfügen wollen, verwenden Sie diesen Code:

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

Dabei ist 12 die Nummer (Delta) des Blocks.

Wenn Sie einen Views-Block einfügen, machen Sie es so:

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

Dabei ist feedbacks-block_1 der Name des Blocks in Views, feedbacks der Name der View und block_1 der Name des Displays in dieser View.