Answers:
创建一个自定义模块,用MODULENAME
模块field_image
名称和字段名称替换:
/**
* Implements hook_entity_view().
*/
function MODULENAME_entity_view($entity, $type, $view_mode, $langcode) {
if ($view_mode == 'teaser') {
$entity->content['field_image']['#items'] = array_slice($entity->content['field_image']['#items'], 0, 1);
}
}
有关更多详细信息,请参见hook_entity_view()文档。
if ($view_mode == 'teaser' && $entity->type == 'CONTENT_TYPE')
。
我使用了hook_field_extra_fields()和hook_node_view()创建一个新字段来显示第一个图像,这样我就不会篡改原始图像字段。
hook_field_extra_fields()初始化新字段,该字段将出现在您节点类型的管理显示选项卡上。
function HOOK_field_extra_fields() {
$extra['node']['NODE_TYPE'] = array(
'display' => array(
'primary_image' => array(
'label' => t('Primary Image'),
'weight' => 0,
)
),
);
return $extra;
}
然后使用hook_node_view()将第一个图像添加为新字段的内容。
function HOOK_node_view($node, $view_mode, $langcode) {
if($node->type == 'NODE_TYPE' && $view_mode == 'teaser') {
//make sure there are images
if(!empty($node->field_images)) {
$node->content['primary_image'] = $node->content['field_images'][0];
//hide the original field with multiple images
hide($node->content['field_images']);
}
}
}
注意:如果启用了显示套件,则可以在管理显示选项卡中执行此操作。