WD5 - разработка сайтов

Темизация полей в 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.

Порядок поиска шаблонов для темизации полей

  1. первым ищется шаблон поля вида field--<field_name>--<node_type>.tpl.php в папке текущей темы.
  2. если не найден шаблон поля field--<field_name>--<node_type>.tpl.php, то ищется шаблон поля field--<node_type>.tpl.php в папке текущей темы.
  3. если не найдены предыдущие шаблоны полей, то ищется шаблон поля вида field--<field_name>.tpl.php в папке текущей темы.
  4. если не найдены предыдущие шаблоны полей, то ищется шаблон поля вида field--<field_type>.tpl.php в папке текущей темы.
  5. если не найдены предыдущие шаблоны полей, то ищется шаблон поля field.tpl.php в папке текущей темы.
  6. если в папке темы не найдены шаблоны полей, то используется файл /modules/field/theme/field.tpl.php.

Темизация через функции в файле template.php нашей темы

Пример кода для темизации конкретного поля с машинным именем field_images

function mytheme_field__field_image($vars) {
  // Тут код
} 

Логика названия функции таже самая, что и у шаблонов, только вместо двойного тире "--" нужно делать двойное подчеркивание "__"

None