Twig_Error_Loader: шаблон не определен - Drupal

Я создал include в Drupal:

{% include directory ~ '/partials/header.html.twig' %}

но я получаю эту ошибку:

Twig_Error_Loader: Template "themes/custom/mytheme/partials/header.html.twig" is not defined (Drupal\Core\Template\Loader\ThemeRegistryLoader: Unable to find template "themes/custom/mytheme/partials/header.html.twig" in the Drupal theme registry.) in "themes/custom/mytheme/page--front.html.twig" at line 1. in Twig_Loader_Chain->getCacheKey() (line 115 of vendor/twig/twig/lib/Twig/Loader/Chain.php).

Согласно документации Drupal и Twig, я делаю это правильно.

У меня есть каталог с именем partials и файл с именем header.html.twig.

введите здесь описание изображения

Что я делаю неправильно? Я использую Drupal в MAMP и OSX, El Capitan. Drupal 8.3.7


person Labanino    schedule 30.09.2017    source источник
comment
Привет, ты очистил кеш?   -  person    schedule 30.09.2017
comment
Да много раз!   -  person Labanino    schedule 30.09.2017
comment
Можете добавить по теме версию drupal плз. А вы добавили свою тему в реестр, это новый модуль или вы перезаписывали файлы ядра?   -  person    schedule 30.09.2017
comment
Это Drupal 8.3.7. Я не прикрепил свою тему в реестр, не новый модуль, и я не трогал файлы ядра.   -  person Labanino    schedule 30.09.2017
comment
Итак, у вас есть 2 решения, создайте новый модуль, сделайте крючок, чтобы прикрепить регистрацию к вашему шаблону или перезаписать используемый вами шаблон, но это означает, что вы не можете обновить шаблон или работать над перезаписью ядра, первое решение - лучшее, с уважением. Решение вашей проблемы здесь drupal.stackexchange.com/questions/25846/   -  person    schedule 30.09.2017
comment
Перезапись ядра означает, что вам нужно позаботиться об обновлениях drupal, потому что, если шаблон добавляет какое-то обновление в очередь, это означает, что вы потеряли все изменения, которые вы сделали в этом шаблоне.   -  person    schedule 30.09.2017
comment
Попробуйте добавить / перед directory: {% include '/' ~ directory ~ ... %}. Хотя ваш исходный код должен работать ...   -  person Stanislav Agapov    schedule 01.10.2017


Ответы (1)


При использовании include или extends Twig с Drupal 8 вы должны указать пространство имен темы / модулей.

Вот полное объяснение с Drupal.org: https://www.drupal.org/node/2143557

Кроме того, вам следует добавить свои файлы partials в папку templates вашей пользовательской темы. Это лучшая практика.


Пример использования

{% include "@mytheme/partials/favicons.html.twig" %}
person Kevin Wenger    schedule 04.10.2017
comment
Спасибо! Я переместил его в папку шаблонов, и теперь он работает нормально! Ошибка Noob, все еще учусь :) - person Himechi90; 23.11.2018
comment
Рад, что это помогает тебе! Это не ошибка новичков, мы всегда учимся чему-то новому ^^. Удачного вам кодирования. - person Kevin Wenger; 23.11.2018