Antworten:
Erstellen Sie ein benutzerdefiniertes Modul, ersetzen Sie es MODULENAME
durch den Namen des Moduls und field_image
durch den Namen Ihres Feldes:
/**
* 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);
}
}
Weitere Informationen finden Sie in der Dokumentation zu hook_entity_view () .
if ($view_mode == 'teaser' && $entity->type == 'CONTENT_TYPE')
.
Sie müssen keinen benutzerdefinierten Code schreiben.
Probieren Sie das Field Multiple Limit- Modul aus.
Sie können die Anzeigeeinstellungen für Ihren Inhaltstyp aufrufen und die Teasereinstellungen so konfigurieren, dass nur eine bestimmte Anzahl von Werten angezeigt wird. Sie können sogar festlegen, dass Werte übersprungen werden, wenn beispielsweise die Werte 2 bis 5 angezeigt werden sollen
.
Ich habe hook_field_extra_fields () und hook_node_view () verwendet, um ein neues Feld für die Anzeige des ersten Bildes zu erstellen, damit ich nicht am Feld für die ursprünglichen Bilder manipuliere.
hook_field_extra_fields () initialisiert das neue Feld, das auf der Registerkarte "Anzeige verwalten" Ihres Knotentyps angezeigt wird.
function HOOK_field_extra_fields() {
$extra['node']['NODE_TYPE'] = array(
'display' => array(
'primary_image' => array(
'label' => t('Primary Image'),
'weight' => 0,
)
),
);
return $extra;
}
Dann wird hook_node_view () verwendet, um das erste Bild als Inhalt Ihres neuen Feldes hinzuzufügen.
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']);
}
}
}
HINWEIS: Wenn Sie die Anzeigesuite aktiviert haben, können Sie dies auf der Registerkarte "Anzeige verwalten" tun.