Próbuję użyć Drupala 8 z niestandardowym motywem, ze względu na duże różnice w strukturze dla moich wymagań Mam stronę - front.twig.html i page.twig.html, chciałbym utworzyć części szablonu, jak używane w phrozn oder w normalnym projekcie Symfony2, na przykład footer.html.twig i header.html.twig. Te szablony są zapisywane w podkatalogu / części /.
Ale kiedy wywołuję te szablony jak zwykle, po prostu otrzymuję ciąg z nazwą szablonu.
Na przykład:
{# in page.html.twig or page--front.html.twig #}
{% include 'parts/footer.html.twig' %}
Zwraca nazwę pliku jako ciąg znaków:
parts/footer.html.twig
Można to zrobić za pomocą Drupala 8?
include
przekazywaniem wartości? Załóżmy, że chciałbym dołączyćimage-formatter
i przekazaćurl
wartość null, aby uniknąć tworzenia połączonego obrazu.@mytheme
rozwiązuje to ścieżkęmytheme
+ ciągu/templates
. Innymi słowy,@mytheme
rozwiązuje domytheme/templates
katalogu.@mytheme
w „themes / custom / mytheme / templates” . Uwzględnienie szablonu znajdującego się w@mytheme/fragments/footer.html.twig
oznacza, że rozwiąże się on jako „themes / custom / mytheme / templates / fragments / footer.html.twig”Użyj pełnej ścieżki do katalogu motywów. Jeśli używasz przestrzeni nazw, musisz ją zmienić, jeśli przeniesiesz kod do innej witryny lub motywu.
To powinno działać:
źródło
Możliwe jest również użycie tablicy przez Twiga do stworzenia rezerwy, gdy plik nie istnieje.
Na przykład. Jeśli footer.html.twig nie jest dostępny, zostanie użyta defaultfooter.html.twig.
Łącząc to z użyciem zmiennych w nazwach plików, możesz dołączyć różne pliki w zależności od pewnego rodzaju kontekstu.Uwaga: Nadal próbuję ustalić, czy jest to najlepsza praktyka, czy nie.
źródło
Uwaga: po
with
słowie kluczowym można przekazywać zmienne :Zobacz dokumentację Twig http://twig.sensiolabs.org/doc/tags/include.html
źródło
Teraz, gdy zatwierdzono dodawanie dziedziczenia szablonów Twig na podstawie rejestru motywów, włączono dodawanie modułów ładujących Twig , można również użyć następującego wiersza.
źródło
Dla Drupala 8
Dołączenie pliku gałązki do motywu podczas wykonywania programu
{% include 'FILE_NAME.html.twig' %}
Drupal oczekuje, że PLIK zostanie umieszczony w bieżącym katalogu motywów. Połóż to i zacznie działać.Dołączanie pliku gałązki do modułu
Jeśli chcesz dodać go do MODUŁU, musisz zadeklarować go w funkcji TEMAT. W pliku .module po prostu dodaj:
Następnie umieść plik Twig w YOUR_MODULE / template / FILE_NAME.html.twig
źródło