Próbuję wyrenderować szablon w Drupal 8. W Drupal 7 stworzyłbym szablon z hook_theme, utworzyłem katalog szablonów w moim module, upuściłem plik szablonu i mogłem wyświetlić go za pomocą theme (). Jak zrobić ekwiwalent za pomocą Drupala 8? Próbowałem następujące, ale błędy:
W twitter_pull.module
/ **
* Implementuje hook_theme ().
* /
funkcja twitter_pull_theme ($ istniejący, $ typ, $ motyw, $ ścieżka) {
zwracana tablica (
'twitter_pull_tweet_listing' => tablica (
„zmienne” => tablica (
„description” => array (),
),
„template” => „templates / twitter_pull_tweet_listing”,
),
);
}
Wewnątrz twitter_pull / templates: twitter_pull_tweet_listing.html.twig
Wewnątrz mojego bloku:
$ tweet_template = array ('# theme' => 'twitter_pull_tweet_listing', '#attributes' => array ('params' => $ params);
$ output = drupal_render ($ tweet_template, array ('params' => $ params);
wydrukuj $ wyjście;
W moich logach pojawia się następujący błąd:
Błąd użytkownika: „treść” jest niepoprawnym kluczem tablicy renderowania w Drupal \ Core \ Render \ Element :: children () (wiersz 89 C: \ xampp \ htdocs \ drupal \ core \ lib \ Drupal \ Core \ Render \ Element. php).
EDYCJA: Kolejny błąd:
Twig_Error_Loader: Nie można znaleźć szablonu „moduły / custom / twitter_pull / templates / templates / twitter_pull_tweet_listing.html.twig” (sprawdzono w: C: \ xampp \ htdocs \ drupal). w Twig_Loader_Filesystem-> findTemplate () (wiersz 202 C: \ xampp \ htdocs \ drupal \ core \ vendor \ twig \ twig \ lib \ Twig \ Loader \ Filesystem.php).
Wyobrażam sobie, że ten błąd występuje, ponieważ nie używam przestrzeni nazw i automatycznego ładowania. Gdzie mogę umieścić plik szablonu? Na podstawie komunikatu o błędzie próbowałem nawet umieścić go w C: \ xampp \ htdocs \ drupal \ templates \, ale nadal nie działał.
drupal_render()? Oczekuje wartości logicznej
templates/templates/Część 2 w komunikacie błędu kojarzy mi się należy spróbować 'template' => 'twitter_pull_tweet_listing',zamiast 'template' => 'templates/twitter_pull_tweet_listing',whook_theme()