Темизация полей в Drupal 7
Темизация это изменение внешнего вида и иногда логики отображения поля через переопределение шаблонов и функций заданных по умолчанию.
Шаблон для темизации полей в Drupal 7, если не задан специфичный находится в
modules/field/theme/field.tpl.php
Его мы и будем переопределять в собственной теме.
Переопределение для темизации поля может быть произведено или через файл шаблона со специальным именем, или через функцию в php коде.
Рассмотрим темизацию полей через специально названные шаблоны в папке текущей темы.
Шаблон для темизации полей определенного типа
field--FIELD_TYPE.tpl.php
Вместо FIELD_TYPE подставляем тип поля, узнать его название можно при создании дополнительных полей к материалам, если текущий язык английский. Чаще всего применяется к полям типа image, text, file.
Например, для темизации всех текстовых полей field--text.tpl.php, изображений field--image.tpl.php, всех связанных терминов таксономии field--taxonomy-term-reference.tpl.php
Шаблон для темизации поля с определенным названием
field--FIELD_NAME.tpl.php
Где FIELD_NAME это машинное имя поля заданное в drupal, оно уникально, внутри одной установки drupal.
Машинное имя поля можно посмотреть на странице /admin/structure/types, для этого нужно перейти в управление полями материала.
На англ это manage fields.
Например для поля с именем автора, с машинным именем field_author шаблон будет следующим field--field_author.tpl.php.
Шаблон для полей в определенных типах материалов (сущностей)
field--BUNDLE.tpl.php
Где BUNDLE это тип созданного у нас на сайте материала.
Шаблон будет применен для переопределения всех полей указанной сущности (контента определенно типа).
Например мы создали новый тип материала, статьи с машинным именем article. Шаблон будет следующим field--article.tpl.php
Сочетание шаблонов для темизации
field--FIELD_TYPE--BUNDLE.tpl.php
Шаблон для всех полей определенного типа внутри сущности (контента определенного типа)
field--FIELD_NAME--BUNDLE.tpl.php
Шаблон будет применен только к определенному типу поля и только в конкретном типе контента.
два тире в названии шаблона "--" являются логическим разделителем для разделения типов и определения пути к материалу.
Внимание: в drupal 7 достаточно хорошая система кеширования, пока не сбросите кеш, даже если он не включен, результат скорее всего не увидите.
Сбросить кеш можно на странице /admin/config/development/performance.
Порядок поиска шаблонов для темизации полей
- первым ищется шаблон поля вида field--<field_name>--<node_type>.tpl.php в папке текущей темы.
- если не найден шаблон поля field--<field_name>--<node_type>.tpl.php, то ищется шаблон поля field--<node_type>.tpl.php в папке текущей темы.
- если не найдены предыдущие шаблоны полей, то ищется шаблон поля вида field--<field_name>.tpl.php в папке текущей темы.
- если не найдены предыдущие шаблоны полей, то ищется шаблон поля вида field--<field_type>.tpl.php в папке текущей темы.
- если не найдены предыдущие шаблоны полей, то ищется шаблон поля field.tpl.php в папке текущей темы.
- если в папке темы не найдены шаблоны полей, то используется файл /modules/field/theme/field.tpl.php.
Темизация через функции в файле template.php нашей темы
Пример кода для темизации конкретного поля с машинным именем field_images
function mytheme_field__field_image($vars) {
// Тут код
}
Логика названия функции таже самая, что и у шаблонов, только вместо двойного тире "--" нужно делать двойное подчеркивание "__"