Odpowiedzi:
Utwórz moduł niestandardowy, zastąp MODULENAME
go nazwą modułu i field_image
nazwą pola:
/**
* 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);
}
}
Więcej informacji znajduje się w dokumentacji hook_entity_view () .
if ($view_mode == 'teaser' && $entity->type == 'CONTENT_TYPE')
.
Nie musisz pisać niestandardowego kodu.
Spróbuj użyć modułu wielokrotnego ograniczenia pola .
Pozwala przejść do ustawień wyświetlania dla danego typu zawartości i skonfigurować ustawienia zwiastuna, aby wyświetlać tylko pewną liczbę wartości. Możesz nawet pomijać wartości, na przykład jeśli chcesz, aby wyświetlał wartości od 2 do 5
.
Użyłem hook_field_extra_fields () i hook_node_view (), aby utworzyć nowe pole do wyświetlania pierwszego obrazu, aby nie manipulować oryginalnym polem obrazów.
hook_field_extra_fields () inicjuje nowe pole, które pojawi się na karcie zarządzania wyświetlaniem typu węzła.
function HOOK_field_extra_fields() {
$extra['node']['NODE_TYPE'] = array(
'display' => array(
'primary_image' => array(
'label' => t('Primary Image'),
'weight' => 0,
)
),
);
return $extra;
}
Następnie hook_node_view () służy do dodania pierwszego obrazu, który ma być zawartością nowego pola.
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']);
}
}
}
UWAGA: Jeśli masz włączony pakiet wyświetlania, możesz to zrobić na karcie zarządzania wyświetlaniem.