Respostas:
Crie um módulo personalizado, substitua MODULENAME
pelo nome do módulo e field_image
pelo nome do seu campo:
/**
* 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);
}
}
Veja a documentação do hook_entity_view () para mais detalhes.
if ($view_mode == 'teaser' && $entity->type == 'CONTENT_TYPE')
.
Não há necessidade de escrever código personalizado.
Tente usar o módulo de limite múltiplo de campo .
Ele permite que você acesse as configurações de exibição do seu tipo de conteúdo e defina as configurações do teaser para exibir apenas uma certa quantidade de valores. Você pode até fazer pular valores, por exemplo, se desejar exibir os valores 2 a 5
.
Usei hook_field_extra_fields () e hook_node_view () para criar um novo campo para exibir a primeira imagem, para que eu não estivesse mexendo no campo de imagens originais.
hook_field_extra_fields () inicializa o novo campo que aparecerá na guia gerenciar exibição do seu tipo de nó.
function HOOK_field_extra_fields() {
$extra['node']['NODE_TYPE'] = array(
'display' => array(
'primary_image' => array(
'label' => t('Primary Image'),
'weight' => 0,
)
),
);
return $extra;
}
Então hook_node_view () é usado para adicionar a primeira imagem ao conteúdo do seu novo campo.
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']);
}
}
}
NOTA: Se você tiver o conjunto de telas ativado, poderá fazê-lo na guia Gerenciar telas.