Соглашения об именах шаблонов Twig
Drupal загружает шаблоны на основе определенных соглашений об именах. Это позволяет вам переопределять шаблоны, добавляя их в вашу тему и присваивая им конкретные имена.
После добавления шаблона вы должны перестроить кеш, чтобы Drupal обнаружил ваш новый шаблон.
Вы можете отлаживать шаблоны Twig, чтобы выяснить, какие шаблоны используются для вывода разметки для любого данного элемента. Подробнее об отладке Twig здесь.
На этой странице перечислены соглашения, используемые для базовой структуры HTML, страницы, регионов, блоков, узлов, полей и других основных компонентов. (Полезно знать, что можно создавать собственные предложения по именам шаблонов, используя функцию hook_theme_suggestions_HOOK_alter.)
HTML (<head> шаблон)
HTML-шаблон обеспечивает разметку для базовой структуры HTML-страницы, включая теги <head>, <title> и <body>.
Базовый шаблон: html.html.twig (базовое расположение: core/modules/system/templates/html.html.twig)
Ниже приведены некоторые примеры того, как вы можете переопределить базовый шаблон:
- html--[internalviewpath].html.twig
- html--node--[nodeid].html.twig
- html.html.twig
См. Документацию API html.html.twig.
Page шаблон
Шаблон: page--[front|internal/path].html.twig
Базовый шаблон: page.html.twig (базовое расположение: core/modules/system/templates/page.html.twig)
Предложения многочисленны. Главная страница имеет приоритет. Остальное основано на внутреннем пути текущей страницы. На главной странице можно выбрать Administration > Configuration > System > Site information." (Http://example.com/admin/config/system/site-information). Шаблон лицевой страницы - page - front.html.twig.
Не путайте внутренний путь с псевдонимами пути, которые не учитываются.
Список предлагаемых файлов шаблонов приведен в порядке специфичности на основе внутренних путей. Одно предложение делается для каждого элемента текущего пути, хотя числовые элементы не переносятся в последующие предложения. Например, «http://www.example.com/node/1/edit» приведет к следующим предложениям:
- page--node--edit.html.twig
- page--node--1.html.twig
- page--node.html.twig
- page.html.twig
См. Документацию API page.html.twig. Также см. ниже шаблон страницы обслуживания.
Regions
Шаблон: region--[region].html.twig
Базовый шаблон: region.html.twig (базовое расположение: core/modules/system/templates/region.html.twig)
Шаблон региона используется, когда у области страницы есть контент, либо из системы блоков, либо функций, таких как hook_page_top() или hook_page_bottom(). Возможные имена регионов определяются файлом темы .info.yml.
Смотрите документацию по region.html.twig API.
Blocks
Шаблон: block--[module|--[delta].html.twig
Базовый шаблон: block.html.twig (базовое расположение: core/modules/block/templates/block.html.twig)
- block--[module]--[delta].html.twig
- block--[module].html.twig
- block.html.twig
«module» - это имя модуля, а «delta» - внутренний идентификатор, назначенный блоку модулем.
Например, «block--block--1.html.twig» будет использоваться для первого отправленного пользователем блока, добавленного на экране администрирования блока, так как он был создан модулем блока с идентификатором 1. Блок, специфичный для региона шаблоны недоступны в Drupal 8.
Если бы у вас был блок, созданный с помощью пользовательского модуля с именем «custom», и дельта «my-block», подсказка для ловушки темы будет называться «block--custom--my-block.html.twig.».
Также еще один пример с представлениями: если у вас есть блок, созданный представлениями с именем представления "front_news" и отображаемым идентификатором "block_1", то предложение для ловушки темы будет следующим: block--views-block--front-news-block-1.html.twig (обратите внимание, когда у вас есть подчеркивания в отображаемом идентификаторе или в имени представления - вы должны преобразовать их в одну черту)
Помните, что в этом контексте имена модулей чувствительны к регистру. Например, если ваш модуль называется «MyModule», наиболее общим предложением для подключения темы будет «block--MyModule.html.twig».
См. документацию API block.html.twig.
Nodes
Шаблон: node--[content-type|nodeid]--[viewmode].html.twig
Базовый шаблон: node.html.twig (базовое местоположение: core/modules/node/templates/node.html.twig)
Тематические предложения хуков сделаны на основе этих факторов, перечисленных от наиболее конкретного шаблона к наименьшему. Drupal будет использовать самый конкретный шаблон, который он найдет:
- node--[nodeid]--[viewmode].html.twig
- node--[nodeid].html.twig
- node--[content-type]--[viewmode].html.twig
- node--[content-type].html.twig
- node--[viewmode].html.twig
- node.html.twig
Обратите внимание, что подчеркивания (_) в имени компьютера типа содержимого заменяются дефисами (-).
Смотрите документацию по API node.html.twig.
Taxonomy terms
Шаблон: taxonomy-term--[vocabulary-machine-name|tid].html.twig
Базовый шаблон: taxonomy-term.html.twig (базовое расположение: core/modules/taxonomy/templates/taxonomy-term.html.twig)
Тематические предложения хуков сделаны на основе этих факторов, перечисленных от наиболее конкретного шаблона к наименьшему. Drupal будет использовать самый конкретный шаблон, который он найдет:
- taxonomy-term--[tid].html.twig
- taxonomy-term--[vocabulary-machine-name].html.twig
- taxonomy-term.html.twig
Обратите внимание, что подчеркивания в имени машины словаря заменяются дефисами.
См. Документацию API taxonomy-term.html.twig.
Fields
Шаблон: field--[[type|name]|[entity-type]--[field-name|content-type]].html.twig
Базовый шаблон: field.html.twig (базовое расположение: core/modules/system/templates/field.html.twig)
Тематические предложения хуков сделаны на основе этих факторов, перечисленных от наиболее конкретного шаблона к наименьшему. Drupal будет использовать самый конкретный шаблон, который он найдет:
- field--node--[field-name]--[content-type].html.twig
- field--node--[field-name].html.twig
- field--node--[content-type].html.twig
- field--[field-name].html.twig
- field--[field-type].html.twig
- field.html.twig
Обратите внимание, что подчеркивания (_) в имени машины поля заменяются дефисами (-). Также не забудьте включить «field-» в имена пользовательских полей, например: field--field-phone.html.twig.
См. Документацию API field.html.twig.
Comments
Шаблон: comment--[comment-field-name]--[node-type].html.twig
Базовый шаблон: comment.html.twig (базовое расположение: core / modules / comment / templates / comment.html.twig)
Добавлена поддержка для создания файлов comment--[comment-field-name]--[node-type].html.twig, чтобы форматировать комментарии определенного типа узла иначе, чем другие комментарии на сайте. Например, комментарий, сделанный на узле типа статьи, будет «comment--field-comments--article.html.twig».
См. Документацию API comment.html.twig.
Comment wrappers
Шаблон: field--node--[comment-field-name]--[content-type].html.twig
Базовый шаблон: field--comment.html.twig
Forums
Шаблон: forums--[[container|topic]--forumID].html.twig
Базовый шаблон: forums.html.twig (базовое расположение: core/modules/forum/templates/forums.html.twig)
Тематические предложения хуков сделаны на основе этих факторов, перечисленных от наиболее конкретного шаблона к наименьшему. Drupal будет использовать самый конкретный шаблон, который он найдет:
Для forum containers:
- forums--containers--[forumid].html.twig
- forums--[forumid].html.twig
- forums--containers.html.twig
- forums.html.twig
По темам форума:
- forums--topics--[forumid].html.twig
- forums--[forumid].html.twig
- forums--topics.html.twig
- forums.html.twig
Смотрите документацию по API для forums.html.twig.
Maintenance page
Шаблон: maintenance-page--[offline].html.twig
Базовый шаблон: maintenance-page.html.twig (базовое расположение: core/modules/system/templates/maintenance-page.html.twig)
Это применимо, когда база данных дает сбой. Полезно для представления дружественной страницы без сообщений об ошибках. Тема Maintenance page должна быть правильно настроена в первую очередь.
Смотрите документацию по Maintenance-page.html.twig API.
Обратите внимание, что файл maintenance-page--offline.html.twig в настоящее время не отображается, когда база данных недоступна. Отслеживаемая проблема: # 2720109: maintenance-page - offline.html.twig не обнаруживается, когда система находится в автономном режиме.
Search result
Шаблон: search-result--[search-type].html.twig
Базовый шаблон: search-result.html.twig (базовое расположение: core/modules/search/templates/search-result.html.twig)
search-result.html.twig - это оболочка по умолчанию для отдельных результатов поиска. В зависимости от типа поиска предлагаются разные предложения. Например, «example.com/search/node/Search+Term» приведет к использованию «search-result--node.html.twig». Сравните это с "example.com/search/user/bob", что приведет к "search-result--user.html.twig". Модули могут расширять типы поиска, добавляя больше предложений их типа.
См. Документацию API search-result.html.twig.
Views
Все шаблоны представлений могут быть переопределены различными именами с использованием представления, идентификатора отображения представления, типа отображения представления или некоторой их комбинации.
Для каждого представления будет использоваться как минимум два шаблона. Первый используется для всех представлений: views-view.html.twig.
Второй шаблон определяется стилем, выбранным для представления. Обратите внимание, что определенные аспекты представления также могут изменить используемый стиль; например, аргументы, которые предоставляют сводный вид, могут изменить стиль на один из специальных стилей сводки.
Стиль по умолчанию для всех представлений - views-view-unformatted.html.twig.
Многие стили будут затем отображать фактическое отображение каждой строки в стиле строки; стиль строки по умолчанию - views-view-fields.html.twig.
Шаблоны:
- views-view--[viewid]--[view-display-id].html.twig
- views-view--[viewid]--[view-display-type].html.twig
- views-view--[view-display-type].html.twig
- views-view--[viewid].html.twig
- views-view.html.twig
Базовый шаблон: views-view.html.twig (базовое расположение: core/themes/stable/templates/views/views-view.html.twig)
Например, если мы хотим переопределить шаблон «views-view.html.twig» для нашего представления, допустимы следующие имена шаблонов:
- views-view--[viewid]--[view-display-id].html.twig
- views-view--[viewid]--page.html.twig
- views-view--block.html.twig
- views-view--[viewid].html.twig
- views-view.html.twig
Шаблоны на основе views-view-field.html.twig имеют постфикс с идентификатором поля представления (как в шаблонах замены) для отображения одного поля в представлении:
- views-view-field--[viewid]--[view-display-id]--[fieldid].html.twig
- views-view-field--[viewid]--page--[fieldid].html.twig
- views-view-field--block--[fieldid].html.twig
- views-view-field--[fieldid].html.twig
- views-view-field.html.twig
Вот пример всех шаблонов, которые будут опробованы в следующем случае:
Вид, названный foobar. Стиль: неформатный. Стиль строки: поля. Дисплей: страница.
- views-view--foobar--page.html.twig
- views-view--page.html.twig
- views-view--foobar.html.twig
- views-view.html.twig
- views-view-unformatted--foobar--page.html.twig
- views-view-unformatted--page.html.twig
- views-view-unformatted--foobar.html.twig
- views-view-unformatted.html.twig
- views-view-fields--foobar--page.html.twig
- views-view-fields--page.html.twig
- views-view-fields--foobar.html.twig
- views-view-fields.html.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.