Одной из многих фич, за которые мне нравится Drupal, является возможность сделать уникальный шаблон и разметку для любой части страницы, будь то блок с меню, нода, регион и т.д. Мало того, можно задать уникальный шаблон только для какой нибудь одной страницы, или определённого блока, который будет отличаться от других. Это позволяет гибко и красиво создавать темы для Drupal.
Сразу обращу внимание: двойной дефис -- в названии файлов шаблонов это не опечатка, это особенности именования файлов шаблонов в Drupal 7.
Шаблоны блоков
block--[region|[module|--delta]].tpl.php
Стандартным файлом шаблоном для блока является block.tpl.php
. Для тонкой настроки отображения блоков на сайте доступны еще несколько шаблонов:
- block--module--delta.tpl.php, где
module
- название модуля, с помощью которого создаётся блок, аdelta
- идентификатор блока, для которого предназначен этот шаблон. Это позволяет задать разметку для одного конкретного блока. Приведу несколько примеров. Напримерblock--block--1.tpl.php
будет отвечать за блок с id = 1, созданный с помощью модуля block, т.е. первый созданный Вами блок с помощью функции "Создать блок", на странице администрирования блоков. Аblock--search--form.tpl.php
отвечает за разметку блока с формой поиска. Еще один пример - самописный модуль custom, создаёт блокmy-custom-block
, тогда чтобы задать разметку только для этого блока нужно задать следующее имя файла шаблона:block--custom--my-custom-block.tpl.php
. Блок с голосованием переопределяется следующим шаблоном:block--poll.tpl.php
. - block--module.tpl.php, где module - название модуля, с помощью которого созданы блоки. Этот шаблон отвечает за разметку всех блоков, созданных с помощью указанного модуля. Например шаблоном
block--user.tpl.php
можно определить отображение всех блоков, созданных модулем user (блок с формой входа, "кто онлайн", новые пользователи). Так же, для примера выше, чтобы задать нестандартную разметку для всех блоков, созданных с помощью самописного модуля custom, необходимо назвать файл шаблонаblock--custom.tpl.php
. - block--region.tpl.php - задаёт разметку для всех блоков в регионе region. Очень удобный шаблон, часто нужно, например, задать другую разметку для всех блоков, находящихся в регионе footer, или header. С помощью шаблонов
block--footer.tpl.php
иblock--header.tpl.php
(названия регионов прописаны в файле имя-шаблона.info Вашей темы) можно сделать это красиво, логично и просто.
Приоритет использования файлов шаблонов соотвествует их порядку в списке выше. Т.е. сначала Drupal использует шаблон block--module--delta.tpl.php
, затем block--module.tpl.php
и наконец block--region.tpl.php
. Если таких файлов не будет, то будет использоваться разметка из файла block.tpl.php
.
Шаблоны комментариев
Комментарии в Drupal 7 выводятся с помощью двух шаблонов: comment.tpl.php
и comment-wrapper.tpl.php
. Соотвественно первый шаблон отвечает за отображение каждого отдельного комментария с списке комментариев, а второй шаблон является "обёрткой" для списка комментариев.
- comment--node-[type].tpl.php, где node-[type] - тип материара. Этот шаблон позволяет задать разметку для каждого отдельного комеентария в материале определённого типа. Например,
comment--node-article.tpl.php
задаст разметку комментариев в материалах типа acticle. - comment-wrapper--node-[type].tpl.php - задаёт разметку для "обёртки" комментариев для определённого типа материала. Здесь node-[type] - это тип материала. Пример использования:
comment-wrapper--node-article.tpl.php
задаст разметку "обертки" комментариев для материалов типа article.
Шаблоны полей
Drupal позволяет добавлять в материалы неограниченное количество полей, будь то текстовые, ихображения. выпадающие списки и многие другие. И, конечно, их можно темизировать. Базовым шаблоном, который отвечает за вывод всех полей на сайте, является field.tpl.php
. Drupal позволяет очень гибко настраивать разметку этих полей.
field--[type|name[--content-type]|content-type].tpl.php
- field--field-name--content-type.tpl.php - этот шаблон позволяет задавать разметку для поля с именем
field-name
, которое отображается только в материалах типа content-type. - field--content-type.tpl.php - разметка для всех полей в материале типа content-type.
- field--field-name.tpl.php - где
field-name
имя поля. Задаёт разметку для поля с определённым именем. Например для поля с машинным именемfield-news-foto
шаблон будет выглядеть так:field--field-news-foto.tpl.php
. - field--field-type.tpl.php - задаёт разметку для всех полей определённого типа. В Drupal есть много типов полей: изображение, числовое, текстовое, многострочное и другие. Для каждого из этих типов полей можно задать разметку. Например,
field--image.tpl.php
задаст вид для полей типа image.
Приоритет использования файлов шаблонов полей такой же, как и с блоками. Т.е. согласно списку шаблонов выше, Drupal будет использовать сначала шаблон field--field-name--content-type.tpl.php
, затем field--content-type.tpl.php
и т.д. Если таких файлов не будет, то шаблон будет браться из базового файла шаблона для полей - field.tpl.php
.
Взято из официальной документации по Drupal 7.