
Подобна ситуация на Multiple images and Teaser може да се реши и с темплейт на field. По подразбиране може да направим темплейти за различни ситуации като field за content type, но точно за тази не е предвиден вариант по подразбиране. Затова ще си добавим модел за име на темплейта (на снимката), който да включва и view_mode (full, teaser и останалите).
Добавяме в template.php следния код (заменяме THEME с машинното име на текущата тема)
function THEME_preprocess_field(&$variables, $hook) { $variables['theme_hook_suggestions'][] = 'field__' . $variables['element']['#field_name'] . '__' . $variables['element']['#view_mode']; }
Копираме field.tpl.php от /modules/field/theme/ в директорията на текущата тема и го преименуваме на field--field-image--teaser.tpl.php. Редактираме неговият код до следния
<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; ?>> <div class="field-item"<?php print $item_attributes[0]; ?>><?php print render($items[0]); ?></div> </div> </div>
Премахнали сме обхождането на масива $items и отпечатваме направо първия елемент $items[0].
Трябва да отбележим, че всяка долна черта в модела на името на темплейта във function THEME_preprocess_field(&$variables, $hook) се чете като тире в името на файла на темплейта. Когато името на полето е от няколко думи, то машинното му име вместо паузи е с долна черта за всяка пауза и за него важи правилото долна черта във функцията за тире в името на файла. Същото се отнася и за view_mode. Също както за поле с име field_image за teaser името на файла е field--field-image--teaser.tpl.php.