Шаблоны блоков, комментариев и полей Drupal 7

Одной из многих фич, за которые мне нравится 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.