我正在使用Drupal 7.2构建一个站点,并使用几个有用的模块(Views,Display Suite和20多个)。
我在内容类型(文章)中添加了一个图片字段,并设置了“字段设置” - > '值的数量'为5,这意味着用户可以为此字段上传5张图像
在“全内容”视图模式下,我想显示所有图像,但如何在“预告片”模式下仅显示一个图像?有没有模块可以做到这一点?
答案 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。使用此模块,您可以选择在允许多个条目的字段的哪个视图中显示的项目数。
然后在该字段的前贴片广告视图中,您可以选择要显示或跳过的项目数。
已经回答了这个问题答案 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
附:不要忘记刷新缓存。