Иногда возникает задача: в Twig-шаблоне параграфа (paragraph.html.twig
) нужно отобразить заголовок материала (ноды), к которому этот параграф прикреплён.
Записи с тегом ‘Drupal 10/11’
Как в шаблоне параграфа получить заголовок родительской ноды
Drupal: возврат страницы из контроллера с установкой cookie и использованием шаблона темы
В Drupal контроллеры чаще всего возвращают Renderable
-массивы. Такие массивы автоматически проходят через систему рендеринга и подставляются в базовый шаблон темы (page.html.twig
). Но иногда бывает нужно получить полный Response
с темизацией вручную — например, когда дополнительно требуется работать с заголовками, cookie или особыми параметрами ответа.
Форматирование дат в Twig на Drupal 10/11: date и format_date() с примерами
В Drupal 10/11 при работе с шаблонами Twig часто требуется вывести дату в нужном формате — будь то текущая дата, дата из поля сущности или timestamp. Для этого можно использовать стандартный Twig-фильтр date
, а также функцию format_date()
.
В этой статье разберём основные варианты с примерами, в том числе:
- использование форматов из админки
/admin/config/regional/date-time
. - получение текущего timestamp;
- вывод даты в любом формате PHP;
- локализация с помощью
format_date()
; - работа с датами в ISO-формате;
Как программно отрендерить View в Drupal и получить HTML
В некоторых случаях удобно не только встроить View через UI или блок, но и программно срендерить представление (View
) и получить HTML — например, для отправки во внешнюю систему, в e-mail, или вывода в нестандартном месте.
В этой статье покажем, как это сделать правильно — через Views::getView()
и renderer->renderRoot()
.
Эффективное кеширование по доступу к ноде: параметрический Cache Context в Drupal

Когда мы используем кеширование в Drupal, типичный подход — добавить user
в список контекстов: ['user']
. Это означает, что для каждого пользователя будет создана своя версия кеша. Иногда это оправдано. Но если доступ можно классифицировать в ограниченное число состояний — гораздо разумнее кешировать по этим состояниям.
Отключаем страницы терминов таксономии в Drupal
По умолчанию Drupal генерирует маршруты для каждого термина таксономии. Это означает, что у каждого термина появляется своя страница с URL вида /taxonomy/term/123
. В некоторых случаях такие страницы могут быть полезны, например, если вы используете термины как категории для материалов и хотите отображать подборку по ним. Но чаще всего — особенно для вспомогательных словарей (тегов, фильтров, FAQ-групп) — такие страницы не нужны вовсе.
Drupal: шаблоны для taxonomy_term и view mode — как добавить?
При работе с таксономией в Drupal нередко возникает потребность отображать термины по-разному в зависимости от контекста. Например, один и тот же термин в режиме teaser
должен выводиться компактно, а в режиме full
— с подробным описанием.
Если вы используете разные view mode для терминов таксономии, вполне логично захотеть разные Twig-шаблоны для каждого режима. Но есть нюанс: в отличие от сущностей node
, по умолчанию Drupal не предоставляет template suggestions для taxonomy_term
в зависимости от view mode.
Инициализируем кастомную тему в Drupal
При создании новой темы у вас есть варианты выбора начиная с того, чтобы взять готовую тему (и начать её менять под ваши задачи) до создания новой темы с «нуля». Часто также берут легаси шаблон — т.е. тему с прошлого проекта, потому что «мы там всё уже знаем и сделали как нужно».
Все эти опции имеют свои плюсы и минусы, я же расскажу о варианте близком к «теме с нуля», но всё же позволяющей быстро начать писать полезный код/стили.
Читать далее »Добавление произвольных требований при установке модуля в Drupal
Иногда модуль в Drupal требует наличия специфических сущностей или конфигураций, например — определённого текстового формата. Поскольку текстовые форматы являются конфигурационными сущностями (entities), напрямую указать их как зависимость в .info.yml
невозможно. Однако в вашем модуле можно реализовать проверку на наличие нужных условий во время установки — с помощью hook_requirements()
.
Быстро чистим таксономии в Drupal
Чтобы через админку почистить длинные словари, нужно много времени, даже если вы используете bulk операции. Потому будем чистить их через код.
Читать далее »