Réponses:
Créez un module personnalisé, remplacez-le MODULENAME
par le nom du module et field_image
par le nom de votre champ:
/**
* 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);
}
}
Voir la documentation hook_entity_view () pour plus de détails.
if ($view_mode == 'teaser' && $entity->type == 'CONTENT_TYPE')
.
Pas besoin d'écrire du code personnalisé.
Essayez d'utiliser le module de limites multiples Field .
Il vous permet d'accéder aux paramètres d'affichage de votre type de contenu et de configurer les paramètres d'accroche pour afficher uniquement une certaine quantité de valeurs. Vous pouvez même lui faire sauter des valeurs, par exemple si vous voulez qu'il affiche les valeurs 2 à 5
.
J'ai utilisé hook_field_extra_fields () et hook_node_view () pour créer un nouveau champ pour afficher la première image afin de ne pas altérer le champ d'images d'origine.
hook_field_extra_fields () initialise le nouveau champ qui apparaîtra sur l'onglet d'affichage de gestion de votre type de nœud.
function HOOK_field_extra_fields() {
$extra['node']['NODE_TYPE'] = array(
'display' => array(
'primary_image' => array(
'label' => t('Primary Image'),
'weight' => 0,
)
),
);
return $extra;
}
Ensuite, hook_node_view () est utilisé pour ajouter la première image comme contenu de votre nouveau champ.
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']);
}
}
}
REMARQUE: Si vous avez activé la suite d'affichage, vous pouvez le faire dans l'onglet gérer l'affichage.