Drupal: шаблоны для taxonomy_term и view mode — как добавить?

При работе с таксономией в Drupal нередко возникает потребность отображать термины по-разному в зависимости от контекста. Например, один и тот же термин в режиме teaser должен выводиться компактно, а в режиме full — с подробным описанием.

Если вы используете разные view mode для терминов таксономии, вполне логично захотеть разные Twig-шаблоны для каждого режима. Но есть нюанс: в отличие от сущностей node, по умолчанию Drupal не предоставляет template suggestions для taxonomy_term в зависимости от view mode.

Что Drupal делает по умолчанию

Когда Drupal рендерит термин таксономии, он ищет Twig-шаблон по следующим приоритетам:

  • taxonomy-term--[vocabulary].html.twig — шаблон для словаря, например tags;
  • taxonomy-term.html.twig — общий шаблон термина.

Однако, если термин отображается в режиме teaser, full, compact и т.п. — это никак не влияет на шаблон, потому что suggestions для view mode не генерируются автоматически.

Как добавить template suggestions для view mode вручную

Чтобы шаблоны могли различаться в зависимости от view mode, добавим нужные подсказки в файл вашей темы (.theme) через hook_theme_suggestions_taxonomy_term_alter():

После этого Drupal начнёт искать шаблоны:

  • taxonomy-term--teaser.html.twig
  • taxonomy-term--tags--teaser.html.twig

в зависимости от view mode и словаря.

Как это использовать

Допустим, вы хотите, чтобы термин из словаря topics в режиме teaser отображался особым образом. Создайте шаблон:

Затем добавьте в него нужную разметку и логику. Например:

На чаще всего копируют базовый шаблон и меняют его.

Нюансы

  • Требуется очистка кэша после добавления хука: drush cr или через интерфейс.
  • Используйте двойное тире (--) в именах шаблонов, а не подчеркивания.

Хотя Drupal не предлагает template suggestions по view mode для taxonomy_term из коробки, их можно легко добавить самостоятельно. Это делает темизацию терминов намного гибче и позволяет использовать все преимущества view mode, как у node.

Мало букафф? Читайте есчо !

Rutube: интегрируем как oembed provider source в Drupal

Февраль 28, 2025 г.

Задача - добавить rutube как oembed провайдера в медиа библиотеку, чтобы можно было создать медиа тип Rutube, где будет поле для ввода ссылки. Медиа поля ...

Читать

Эффективное кеширование по доступу к ноде: параметрический Cache Context в Drupal

Июль 26, 2025 г.

Когда мы используем кеширование в Drupal, типичный подход — добавить user в список контекстов: ['user']. Это означает, что для каждого пользователя будет ...

Читать

Как программно отрендерить View в Drupal и получить HTML

Август 3, 2025 г.

В некоторых случаях удобно не только встроить View через UI или блок, но и программно срендерить представление (View) и получить HTML — например, для отправки во внешнюю систему, в e-mail, или вывода в нестандартном месте. В этой статье покажем, как ...

Читать

Рендер произвольного блока в Drupal 11

Март 13, 2025 г.

Если не хочется объявлять дополнительный регион, чтобы настроить вывод блока через админку, то можно сделать рендер блока программно. Например добавим в препроцессинг страницы переменную с рендером блока branding. Этот блок предоставляется модулем ...

Читать
 

Комментарии к «Drupal: шаблоны для taxonomy_term и view mode — как добавить?»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: