如何在预告模式下显示一个图像,而在完整内容下显示多个图像?

时间:2011-06-15 08:40:07

标签: drupal drupal-7

我正在使用Drupal 7.2构建一个站点,并使用几个有用的模块(Views,Display Suite和20多个)。
我在内容类型(文章)中添加了一个图片字段,并设置了“字段设置” - > '值的数量'为5,这意味着用户可以为此字段上传5张图像 在“全内容”视图模式下,我想显示所有图像,但如何在“预告片”模式下仅显示一个图像?有没有模块可以做到这一点?

4 个答案:

答案 0 :(得分:9)

我通过为这个字段类型添加一个新模板解决了这个问题,比如field-field_image.tpl.php在我的例子中使用以下代码:

// Reduce image array to single image in teaser view mode
if ($element['#view_mode'] == 'teaser') {
  $items = array(reset($items));
}

print render($items);

希望这有帮助。

编辑:这是(可能)正确的方法:

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);
    }

  }

}

答案 1 :(得分:2)

它对我不起作用,我不得不稍微调整代码:

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]);
  }
}

答案 2 :(得分:2)

无需更改代码即可使用模块Field Multiple Limit。使用此模块,您可以选择在允许多个条目的字段的哪个视图中显示的项目数。

然后在该字段的前贴片广告视图中,您可以选择要显示或跳过的项目数。

刚刚看到Drupal Stack Exchange

已经回答了这个问题

答案 3 :(得分:1)

 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更改为teaser,这对我有用。 Drupal v 7.19 附:不要忘记刷新缓存。