Ich muss einen Ansichtenblock in meiner page.html.twig-Vorlage rendern. In D7 würde ich das machen:
<?php
$block = module_invoke('module_name', 'block_view', 'block_delta');
print render($block['content']);
?>
In Drupal 8 ist module_invoke veraltet und es wird empfohlen, dies zu verwenden: (Ich habe den Namen des Blocks als zweiten Parameter hinzugefügt.)
Drupal::moduleHandler()->invoke($block, 'views_block__blog_block_1', $args = array());
Ich habe ein paar Dinge ausprobiert. Zuerst habe ich versucht, es in einem Zweig-Template zu tun, aber ich weiß nicht, wie man PHP-Funktionen in einem Zweig-Template aufruft, so dass es nicht allzu gut geworden ist.
Dann habe ich die Funktion in der preprocess_page () - Funktion in der .theme-Datei aufgerufen, aber bevor ich sie zum Laufen bringen konnte, habe ich etwas Einfacheres versucht, nur um zu versuchen, eine Variable innerhalb der Zweigvorlage arbeiten zu lassen, die auch nicht funktionierte, zum Beispiel:
In der Funktion template_preprocess_page (& $ vars) in der Datei .theme:
$test = 'Hello World';
$vars['$my_var'] = $test;
Ich habe versucht, my_var in der Zweigvorlage aufzurufen, aber es hat nicht funktioniert, und es wurde die Fehlermeldung "Die Website weist einen Fehler auf. Wenden Sie sich an den Administrator."
Zusammenfassend sind hier meine Fragen:
- Wie stelle ich Variablen in Zweigvorlagen zur Verfügung?
- Wie rufe ich Funktionen in Zweigvorlagen auf?
- Rendere ich Blöcke in der .theme-Datei oder in der Zweigvorlage?
In Drupal 8 funktioniert dies zum Rendern eines Block-Plugins (das heißt eines, das Sie in einem benutzerdefinierten Modul erstellt haben) in einem Preprocess_hook:
Sie können es dann wie folgt in Ihrer Zweigvorlage rendern:
Hinweis: Dadurch wird eine allgemeine Version Ihres Blocks geladen. Wenn Sie eine Instanz Ihres Blocks mit Variablen laden möchten (nachdem Sie sie unter / admin / structure / block erstellt haben), müssen Sie sie folgendermaßen laden:
quelle
Sie können dafür das Twig-Tweak- Modul verwenden , dann können Sie die folgende Syntax verwenden:
Verwandte Themen: Wie platziere ich einen Block programmgesteuert?
quelle