Jawaban:
Buat modul khusus, ganti MODULENAME
dengan nama modul dan field_image
dengan nama bidang Anda:
/**
* 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);
}
}
Lihat dokumentasi hook_entity_view () untuk detail lebih lanjut.
if ($view_mode == 'teaser' && $entity->type == 'CONTENT_TYPE')
.
Tidak perlu menulis kode khusus.
Coba gunakan modul beberapa bidang Field .
Ini memungkinkan Anda untuk masuk ke pengaturan tampilan untuk jenis konten Anda dan mengkonfigurasi pengaturan penggoda untuk hanya menampilkan sejumlah nilai tertentu. Anda bahkan dapat membuatnya melewati katup, misalnya jika Anda ingin menampilkan nilai 2 hingga 5
.
Saya menggunakan hook_field_extra_fields () dan hook_node_view () untuk membuat bidang baru untuk menampilkan gambar pertama sehingga saya tidak merusak bidang gambar asli.
hook_field_extra_fields () menginisialisasi bidang baru yang akan muncul pada tab tampilan kelola jenis simpul Anda.
function HOOK_field_extra_fields() {
$extra['node']['NODE_TYPE'] = array(
'display' => array(
'primary_image' => array(
'label' => t('Primary Image'),
'weight' => 0,
)
),
);
return $extra;
}
Kemudian hook_node_view () digunakan untuk menambahkan gambar pertama menjadi konten bidang baru Anda.
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']);
}
}
}
CATATAN: Jika Anda telah mengaktifkan suite display, Anda dapat melakukan ini di tab kelola display.