Apa saran template untuk mode tampilan simpul 'penggoda'?

37

node - [type | nodeid] .tpl.php menargetkan ke mode tampilan default node. Namun saya ingin mengganti template untuk mode tampilan penggoda.

Apa saran template (file .tpl.php) untuk mode tampilan 'penggoda'?

gilzero
sumber

Jawaban:

57

Saya tidak berpikir ada satu secara default tetapi Anda dapat dengan mudah menambahkan satu di file template.php Anda:

function MYTHEME_preprocess_node(&$vars) {
  if($vars['view_mode'] == 'teaser') {
    $vars['theme_hook_suggestions'][] = 'node__' . $vars['node']->type . '__teaser';   
    $vars['theme_hook_suggestions'][] = 'node__' . $vars['node']->nid . '__teaser';
  }
}

Itu akan memungkinkan Anda menggunakan file templat seperti: node--[type|nodeid]--teaser.tpl.php

Clive
sumber
3
Anda juga bisa hanya menarik variabel langsung dari array daripada mereferensikan objek node juga ...
shaneonabike
1

Ada cara yang lebih mudah untuk melakukan ini, melalui modul mode tampilan Entity.

https://www.drupal.org/project/entity_view_mode

The Drupal 7 successor to Build modes which will allow administrators to 
define custom view modes for entities. Custom entities are added to the 
entity registry via hook_entity_info_alter() so they are available to any code
that uses entity_get_info() to provide a list of view modes for an entity. 
This includes node and user reference fields, Views, etc.

It also ensures consistency for template suggestions for all entity types, 
so that you can use any of the template patterns, in order of most specific 
to least specific:

entity-type__id__view-mode
entity-type__id
entity-type__bundle__view-mode
entity-type__bundle
entity-type
fnandogp
sumber
1

Saran templat untuk mode tampilan "penggoda" adalah:

node--[type]--teaser.tpl.php

Secara default mode tampilan "penggoda" menggunakan node.tpl.phptemplat biasa , sehingga Anda dapat menyalin file itu untuk memulai.

Anda dapat melihat semua saran templat dengan mengaktifkan theme_debugmode, https://www.drupal.org/node/223440#theme-debug

Ketika Anda melihat-sumber: pada halaman Anda akan melihat komentar HTML yang menunjukkan seluruh daftar saran template yang dipertimbangkan Drupal.

zapo
sumber
0

Solusi Clive benar. Tetapi jika Anda ingin saran baru dinilai setelah saran default, Anda harus menambahkannya di posisi terakhir array:

function MYTHEME_preprocess_node(&$vars) {
  if($vars['view_mode'] == 'teaser') {
    array_unshift($vars['theme_hook_suggestions'], 'node__' . $vars['node']->type . '__teaser');
    array_unshift($vars['theme_hook_suggestions'], 'node__' . $vars['node']->nid . '__teaser');
  }
}

Dengan cara ini Anda menghindari bahwa node teaser Anda cocok (dan menggunakan, jika ada) node - [type] .tpl.php sebelum node - [type] - teaser.tpl.php

giucas
sumber