Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Отладка скомпилированных шаблонов Twig

04/05/2020, by maria

Как обычно работает Twig

По умолчанию механизм создания тем Twig компилирует шаблоны в код PHP и сохраняет скомпилированный код в памяти. Скомпилированный код не подходит для разработки, так как изменения в шаблонах Twig не сразу обновляются на вашем сайте Drupal.

После того, как Twig закончил с некоторой разметкой, в Render API появился еще один уровень кэширования. Это берет разметку, созданную Twig, и кэширует ее таким образом, что Twig вообще не участвует в последующих запросах страниц, поэтому параметры отладки Twig в конечном итоге игнорируются.

Кэши можно очистить с помощью интерфейса очистки кеша в Drupal, но для дальнейшей разработки проще изменить настройки Drupal, чтобы ни Twig, ни Render API вообще ничего не кэшировали.

Настройка Twig и Render API для отладки

Два уровня API Twig и Render должны быть настроены отдельно для целей отладки:

1. Движок Twig предоставляет опции для настройки отладки, автоматической перезагрузки (перекомпиляции) шаблонов и кэширования скомпилированных шаблонов в файловой системе. Это может быть настроено в services.yml вашего сайта.
2. Кэширование API рендеринга можно настроить в файле settings.php вашего сайта.

Мы пройдем эти два этапа более подробно ниже.

1. Настройка Twig для отладки

Вы можете использовать консоль Drupal для этого; или внесите изменения вручную.

Как включить отладку с помощью Drupal Console

Сначала установите Drupal Console. Затем запустите:

drupal site:mode dev 

Обратите внимание, что это меняет множество настроек, но включает в себя изменение следующих значений в ваших сайтах /default/services.yml:

twig.config: { debug: true } 

Вы должны увидеть что-то похожее на это:

output_3

Как включить отладку вручную

1. Найдите файл services.yml вашего сайта, который, вероятно, находится в sites / default / services.yml
2. Если services.yml еще не существует; скопируйте default.services.yml и переименуйте его в services.yml.
3. Отредактируйте файл services.yml и включите один или несколько параметров отладки, определенных ниже:
           - Варианты отладки Twig
           - Twig с автоперезагрузкой
           - Кеш Twig
4. Восстановить кеш.

Найдите параметры twig.config в вашем services.yml и внесите в него изменения. Пример:

parameters:
  twig.config:
    debug: true 

Варианты отладки веток

Примечание: не устанавливайте их на производстве! Эти три параметра следует оставить неустановленными (т. е. По умолчанию) в производственных средах.

- debug (по умолчанию: false)

Когда установлена ​​debug: true:

  • Разметка каждого шаблона Twig окружена HTML-комментариями, которые содержат информацию о темах, например, подсказки имен файлов шаблонов.
  • Обратите внимание, что эта отладочная разметка приведет к сбою автоматических тестов, которые непосредственно проверяют визуализированный HTML. При запуске автоматических тестов twig_debug должен быть установлен в FALSE.
  • Функция dump() может использоваться в шаблонах Twig для вывода информации о переменных шаблона.
  • Шаблоны Twig автоматически перекомпилируются при изменении исходного кода (см. Auto_reload ниже).

- auto_reload (по умолчанию: null, определяется отладкой выше)

Когда auto_reload: true установлено

  • Автоматически перекомпилировать шаблоны Twig при каждом изменении исходного кода. Если вы не предоставите значение для twig_auto_reload, оно будет определено на основе значения twig_debug.
  • Если вы специально не хотите auto_reload и НЕ отлаживать, вам не нужно трогать этот параметр. Просто включите отладку выше.

- кеш (по умолчанию: true, но переопределяется отладкой выше)

Когда кеш: false установлен:

  • Если у вас нет конкретного варианта использования, не отключайте кэш Twig. Когда вы включаете отладку Twig (или просто auto_reload, если по какой-то причине вы не хотите включать отладку), кеш Twig не будет вам мешать. Отключение кеша Twig приведет к более медленной разработке, поскольку каждый шаблон должен быть скомпилирован независимо от того, был ли он отредактирован или нет. Кроме того, вы не можете легко просмотреть или отладить скомпилированные шаблоны Twig (классы PHP, по умолчанию в sites/default/files/php/twig), если они не кэшированы на диск.
  • По умолчанию шаблоны Twig будут скомпилированы и сохранены в файловой системе для повышения производительности. Отключение кеша Twig будет перекомпилировать шаблоны из исходного кода при каждом их использовании. В большинстве случаев указанная выше настройка twig_auto_reload должна быть включена, а не отключать кеш Twig.

 

2. Настройка Render API кеш для отладки

По умолчанию Drupal кэширует любой рендеринг для блоков и сущностей, чтобы ускорить последующую загрузку страниц. Это означает, что изменения в шаблонах Twig для них не вступят в силу немедленно. Настройка кеша рендеринга на использование нулевого кеша эффективно отключает это.

Чтобы отключить кэш рендеринга, добавьте следующие строки:

  • settings.php, стараясь не добавлять его на свой производственный сайт
  • или settings.local.php, сначала раскомментировав строки в нижней части вашего settings.php.

Эти строки:

$settings['container_yamls'][] = DRUPAL_ROOT . '/sites/development.services.yml';
$settings['cache']['bins']['render'] = 'cache.backend.null';
$settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; 

Вы можете обнаружить, что они уже есть в вашем файле settings.php, закомментированы; если так, просто раскомментируйте их (но не забудьте закомментировать их позже!)

Вы сделали это!

С настройками API Twig и Render очистите все кеши: вы можете использовать Drush или перейти к Конфигурация -> Производительность и затем нажать кнопку Очистить все кеши.

Наконец, обновите страницу, которую вы проверяете: вы должны увидеть информацию об отладке Twig в источнике страницы, а обновления шаблонов Twig должны немедленно распространиться на любую обновленную страницу.

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.