Drupal 8 отключить кэш Twig для редактирования и отладки темы, шаблонов

Drupal: 
Уровень сложности: 

Drupal 8 использует Twig - шаблонный движок, который упрощает кодирование, но усложняет отладку. Если вы отредактировали файлы темы, например, templates/page.html.twig, mytheme.theme, а результат не виден, следующие точные инструкции помогут отключить кэширование шаблонов Твиг в Друпал 8 и ускорить процесс отладки своей темы или модуля.

Вопросы: Как отключить кэш Друпал 8 для разработки? Как верстать шаблон на Друпал 8? Как натянуть макет на Друпал 8? Почему не обновляется тема Друпал 8? Не изменяется тема после редактирования шаблона. Очистка кэша не помогает. Как отключить кэш Твиг в Друпал 8 совсем? Ошибки при редактировании темы, шаблонов.

Как редактировать тему на Друпал 8

Когда вы выбрали оптимальную контрибную тему из Обзора шаблонов для Друпал 8 и переименовали её двумя командами в терминале, остаётся главная задача - сверстать дизайн по макету или, проще говоря, отредактировать тему. Но для этого не достаточно просто редактировать файлы, нужно также чистить кэш, и в Друпал 8 кэш многообразный.

Отключить кэширование css и js

Разработчик шаблонов для Друпал 8 (верстальщик) должен знать, что в Друпал есть два вида кэша, которые нужно отключать при вёрстке и отладке шаблонов:

  1. Кэш css и js-файлов - нужно отключить в разделе Конфигурация - Производительность /admin/config/development/performance (отключите: Объединение CSS файлов, Объединить файлы JavaScript). Тогда при редактировании css и js-файлов изменения будут видны сразу (если нет, тогда на этой же странице нажмите Очистка кэша).

  2. Кэш шаблонов Twig - включен по умолчанию, и не отключается в разделе Администрирования. Когда вы редактируете любой другой программный файл (в папке templates page.html.twig, menu--main.html.twig или mytheme.theme...), тогда изменения не будут видны, пока Друпал не очистит кэш, или вы не отключите кэширование шаблонов Твиг. Простое отключение и включение темы не помогает.
     

Отключить кэширование шаблонов Twig

По запросу drupal 8 disable twig cache есть точные рекомендации: https://www.drupal.org/node/2598914 Предлагаем перевод и уточнения.

1) Скопируйте файл sites/example.settings.local.php в sites/default/settings.local.php (предварительно разрешив запись в папку: chmod +w sites/default )

cp sites/example.settings.local.php sites/default/settings.local.php

2) Откройте файл sites/default/settings.php (предварительно разрешив запись в этот файл: chmod +w sites/default/settings.php ) и раскомментируйте эти строки:

  1. if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
  2. include $app_root . '/' . $site_path . '/settings.local.php';
  3. }

3) Раскомментируйте или добавьте в конец файла sites/default/settings.php эту строку кода:

$settings['container_yamls'][] = DRUPAL_ROOT . '/sites/development.services.yml';

4) Откройте файл sites/default/settings.local.php, который вы создали на шаге 1, и проверьте значения переменных. Если вы будете отлаживать css и js, тогда агрегация не нужна, в этих строках должно быть FALSE:

  1. $config['system.performance']['css']['preprocess'] = FALSE;
  2. $config['system.performance']['js']['preprocess'] = FALSE;

5) Обязательно раскомментируйте в файле sites/default/settings.local.php эти строки, чтобы отключить динамический кэш:

  1. $settings['cache']['bins']['render'] = 'cache.backend.null';
  2. $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null';

6) Откройте файл sites/development.services.yml и добавьте в конец эти строки для отключения кэша Твиг:

  1. parameters:
  2. twig.config:
  3. debug : false
  4. auto_reload: true
  5. cache: false

Если вам нужно, чтобы Друпал отображал скрытые html-теги с отладочной информацией о шаблонах, тогда в строке debug должно быть true.

После всех этих операций очитите кэш так: откройте адрес: вашсайт.рф/core/rebuild.php или нажмите Очистка кэша в Конфигурация - Производительность.

Чтобы убедиться, что настройки верны, откройте Отчёты - Отчёт о состоянии, то есть /admin/reports/status и найдите строку Rebuild access:
<< Rebuild access Включено
В settings.php включена переменная rebuild_access setting. Рекомендуется отключить эту настройку если вы не собираетесь выполнять перекомпиляцию сайта.>>

Rebuild access settings drupal
Это означает, что кэш отключен, Друпал будет перекомпилировать сайт при каждом обращении к страницам.

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

Возможные проблемы:
Некоторые хостинги, например, ihc.ru, имеют встроенный кэш файлов (на уровне сервера), поэтому на таких хостингах не получится нормально разрабатывать сайт на Друпал 8. Пользуйтесь локальным сервером или джино, drupalhosting, VPS.

 

Ответы на вопросы

Почему Друпал тормозит при отключенном кэше, страницы медленно открываются, как всё исправить? - При каждом обращении к страницам сайта без кэша Друпал компилирует тему, поэтому работает на 1-5 секунд медленнее. После отладки темы нужно включить кэширование, и скорость сайта возрастёт. Для хорошей скорости рекомендуется использовать оптимизированную тему Themy.

Где хранятся кэшированные файлы? - В публичной папке (которая указана в settings.php, обычно sites/default/files) в подпапках css и js хранятся агрегированные файлы стилей и скриптов, а в подпапке php хранятся кэшированные файлы шаблонов Твиг. Эти файлы можно удалять.

Как обратно включить кэш, когда тема отлажена, и сайт отдан в эксплуатацию? - Проделайте предложенные шаги обратно, редактируя файлы settings.php, settings.local.php, development.services.php и включив Объединение и сжатие css, js в Конфигурация - Производительность.

Как вывести переменные в шаблоне Твиг? - Тут https://www.drupal.org/node/1906780 предложен такой Твиг-код: {{ dump(title) }} где title - это переменная $title.

Как закомментировать часть кода в Твиг? - Для этого используйте {# многострочные комментарии Твиг #}, внутри которых текст или код не будут выводиться и обрабатываться.

Хорошо, но кто поможет сделать портал на Drupal 8? - Разместите заказ на dru.io или задавайте вопросы на drupal.ru