Как отобразить одно изображение в режиме тизера, в то время как несколько изображений под полным контентом?

Я создаю сайт с 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. Не забудьте очистить кэш.