Muszę wyrenderować blok wyświetleń w szablonie page.html.twig. W D7 zrobiłbym to:
<?php
$block = module_invoke('module_name', 'block_view', 'block_delta');
print render($block['content']);
?>
W Drupal 8 module_invoke jest przestarzałe i zalecane jest użycie tego: (Dodałem nazwę bloku jako drugi parametr)
Drupal::moduleHandler()->invoke($block, 'views_block__blog_block_1', $args = array());
Próbowałem kilku rzeczy. Najpierw próbowałem to zrobić w szablonie gałązki, ale nie wiem, jak wywoływać funkcje php w szablonie gałązki, więc nie wyszło to zbyt dobrze.
Następnie wywołałem funkcję w funkcji preprocess_page () w pliku .theme, ale zanim udało mi się ją uruchomić, próbowałem czegoś prostszego, po prostu próbując sprawić, by zmienna działała w szablonie gałązki, która też nie działała, na przykład:
W funkcji template_preprocess_page (& $ vars) w pliku .theme:
$test = 'Hello World';
$vars['$my_var'] = $test;
Próbowałem zadzwonić do my_var w szablonie gałązki, ale to nie zadziałało i otrzymałem komunikat o błędzie „Witryna ma błąd, skontaktuj się z administratorem”
Podsumowując, oto moje pytania:
- Jak udostępnić zmienne w szablonach gałązek?
- Jak wywoływać funkcje w szablonach gałązek?
- Czy renderuję bloki w pliku .theme lub szablonie gałązki?
W Drupal 8 działa to w przypadku renderowania wtyczki blokowej (tzn. Utworzonej w niestandardowym module) w haku preprocess_hook:
Następnie możesz wyrenderować go w szablonie gałązki w następujący sposób:
Uwaga: spowoduje to załadowanie ogólnej wersji twojego bloku. Jeśli chcesz załadować wystąpienie swojego bloku zmiennymi (po utworzeniu go w / admin / structure / block), musisz załadować go w ten sposób:
źródło
Możesz do tego użyć modułu dostosowującego Twig , a następnie możesz użyć następującej składni:
Powiązane: Jak programowo umieścić blok?
źródło