Как отобразить одно изображение в режиме тизера, в то время как несколько изображений под полным контентом?
Я создаю сайт с Drupal 7.2 и использую несколько полезных модулей (Views, Display Suite и 20+ more).
Я добавил поле изображения в тип контента (статья) и установил "настройки поля" - > "количество значений" в 5, что означает, что пользователи могут загружать 5 изображений для этого поля.
В режиме просмотра "полный контент" я хотел бы отобразить все изображения, но как отобразить только одно изображение в режиме "тизер"? Есть ли модули, которые могут это сделать?
4 ответов
Я решил эту проблему, добавив новый шаблон для этого типа поля, например field--field_image.ТПЛ.php в моем случае со следующим кодом:
// Reduce image array to single image in teaser view mode
if ($element['#view_mode'] == 'teaser') {
$items = array(reset($items));
}
print render($items);
надеюсь, что это помогает.
Edit: вот (вероятно) правильный способ сделать это:
function MYTHEME_process_field(&$vars) {
$element = $vars['element'];
// Field type image
if ($element['#field_type'] == 'image') {
// Reduce number of images in teaser view mode to single image
if ($element['#view_mode'] == 'teaser') {
$item = reset($vars['items']);
$vars['items'] = array($item);
}
}
}
это не сработало для меня, мне пришлось настроить код sligthly:
function MYTHEME_process_field(&$vars) {
$element = $vars['element'];
// Reduce number of images in teaser view mode to single image
if ($element['#view_mode'] == 'node_teaser' && $element['#field_type'] == 'image') {
$vars['items'] = array($vars['items'][0]);
}
}
один из вариантов без необходимости изменять код-использовать модуль Поле Множественный Предел. С помощью этого модуля вы можете выбрать, сколько элементов показывать в каком виде для полей, допускающих несколько записей.
затем в виде тизера поля вы можете выбрать, сколько элементов, чтобы показать или пропустить.
просто увидел, что это уже ответили в Drupal Stack Exchange
function MYTHEME_process_field(&$vars) {
$element = $vars['element'];
// Reduce number of images in teaser view mode to single image
if ($element['#view_mode'] == 'teaser' && $element['#field_type'] == 'image') {
$vars['items'] = array($vars['items'][0]);
}
}
Я изменил node_teaser
to teaser
и это сработало для меня. Drupal v 7.19
P. S. Не забудьте очистить кэш.