• урок
  • pantey

Список переменных для создания field.tpl.php

28.05.2013

Данный файл опять же относится к системе темизации Drupal, и как вы понимаете из названия предназначен он для изменения вывода полей. Что бы воспользоваться данным файлом необходимо скопировать его из

  1. modules/field/theme/field.tpl.php
в папку с вашей темой. Структура файла выглядит вот так:
  1. <div class="<?php print $classes; ?>"<?php print $attributes; ?>>
  2. <?php if (!$label_hidden): ?>
  3. <div class="field-label"<?php print $title_attributes; ?>><?php print $label ?>: </div>
  4. <?php endif; ?>
  5. <div class="field-items"<?php print $content_attributes; ?>>
  6. <?php foreach ($items as $delta => $item): ?>
  7. <div class="field-item <?php print $delta % 2 ? 'odd' : 'even'; ?>"<?php print $item_attributes[$delta]; ?>><?php print render($item); ?></div>
  8. <?php endforeach; ?>
  9. </div>
  10. </div>

А теперь подробней о каждой доступной нам переменной:

  • $items – содержит массив значений полей, для вывода используется render();
  • $label – метка элемента.
  • $label_hidden – использует флаг TRUE или FALSE, который можно использовать для указания вывода или скрытия метки.
  • $classes – строка с классами CSS, которые отвечаю за стилевое оформления поля. Содержит:
    • field – определяет текущий тип шалона.
    • field-name-[имя_поля] – имя текущего поля.
    • field-type-[тип_поля] – тип текущего поля.
    • field-label-[позиция метки] – позиция метки.
  • $element[‘#object’] – сущность к которой относится поле.
  • $element[‘#view_mode’] – режим просмотра сущности, к которой относится поле. Full – полный или teaser – тизер.
  • $element[‘#field_name’] – имя поля.
  • $element[‘#field_type’] –тип поля.
  • $element[‘#field_language’] – язык поля.
  • $element[‘#field_translatable’] – поддерживает ли поле перевод.
  • $element[‘#label_display’] – позиция вывода метки. Hidden – скрытая, inline – внутри строки, above – сверху.
  • $field_name_css – имя поля, совместимое с CSS.
  • $type_type_css – тип поля, совместимое с CSS.
  • $classes_array – массив значения атрибутов классов в HTML.

Список шаблонов при темизации полей:

шаблон:

  1. field--FIELD_TYPE.tpl.php

Будет использован Drupal для всех полей с указанным типом, например для поля text, данный шаблон будет выглядеть как:

  1. field--text.tpl.php

шаблон:

  1. field--FIELD_NAME.tpl.php

Данный шаблон будет использован для конкретного поля, например поле с именем "field-desc" примет следующий вид:

  1. field--field-desc.tpl.php

шаблон:

  1. field--TYPE.tpl.php

Данный шаблон будет применён ко всем полям, конкретного типа материала, например для типа материала "Articles", шаблон примет вид:

  1. field--articles.tpl.php

шаблон:

  1. field--FIELD_NAME--TYPE.tpl.php

Данный шаблон будет применён только к конкретному полю, конкретного типа материала, например для поля "field-desc", типа материала "Articles", шаблон примет вид:

  1. field--field-desc--articles.tpl.php
-->
Узнавай о новых статьях сайта - первым. Просто подпишись на рассылку.

Комментарии (9)

Profile picture for user 1541
Артур
22.06.2014

Как добавить в тегу img свой класс?
Такой вариант будет работать?
$item) :
$item['field_image']['#attributes']['class'][0] = 'your_class';
?>

>

Profile picture for user pantey
pantey
22.06.2014

такой вариант не сработает, должно быть что-то вроде этого:

function themeName_preprocess_image(&$variables) {
$variables['attributes']['class'][] = 'your_class';
}
Profile picture for user 1541
Артур
22.06.2014
function _preprocess_image(&$variables) {
    // If this image is of the type 'Staff Photo' then assign additional classes to it:
    if ($variables['style_name'] == 'staff_photo') {
        $variables['attributes']['class'][] = 'lightbox';
        $variables['attributes']['class'][] = 'wideborder';
    }
}
Profile picture for user pr0g
pr0g
05.09.2015

Подскажите, как добавить в тег ссылки поля image свой класс?

Profile picture for user pantey
pantey
05.09.2015

здесь может быть несколько вариантов, в зависимости от того, для какой сущности вы это делаете. Чуть подробнее если можно.

Profile picture for user pr0g
pr0g
05.09.2015

Сущность - стандартный тип Изображение с неограниченным количеством изображений Скриншот
Пытаюсь прикрутить компонент Thumbnails Bootstrap

Profile picture for user pantey
pantey
05.09.2015

Вам больше подойдет использовать стандартный файл темизации field.tpl.php. Создадите шаблон для данного поля и там перепишите $item в цикле, как вам нужно. Про шаблоны - здесь подробнее

Profile picture for user pr0g
pr0g
05.09.2015

Так вот я и хотел узнать, что надо переписать в $item, чтобы в тег ссылки добавился нужный мне класс?

Profile picture for user pantey
pantey
05.09.2015

Что то вроде этого

<div class="<?php print $classes; ?>"<?php print $attributes; ?>>
  <?php if (!$label_hidden): ?>
    <div class="field-label"<?php print $title_attributes; ?>><?php print $label ?>: </div>
  <?php endif; ?>
  <div class="field-items"<?php print $content_attributes; ?>>
    <?php foreach ($items as $delta => $item): ?>
      <?php
        $variables = array(
          'style_name' => $item['#image_style'],
          'path' => $item['#item']['uri'],
          'alt' => $item['#item']['alt'],
        );
      ?>
      <div class="field-item <?php print $delta % 2 ? 'odd' : 'even'; ?>"<?php print $item_attributes[$delta]; ?>><a href="#" class="thumbnail"><?php print theme('image_style', $variables); ?></a></div>
    <?php endforeach; ?>
  </div>
</div>