Яка пропозиція шаблону для режиму перегляду вузла "тизер"?


37

node - [тип | nodeid] .tpl.php націлює в режим перегляду вузла за замовчуванням. Однак я хочу змінити шаблон для режиму перегляду тизер.

Що таке пропозиція шаблону (.tpl.php файл) для режиму перегляду «тизер»?

Відповіді:


57

Я не думаю, що він є за замовчуванням, але ви можете легко додати його у файл template.php:

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';
  }
}

Це дозволить вам використовувати файл шаблону на зразок: node--[type|nodeid]--teaser.tpl.php


3
Ви також можете просто витягнути змінні прямо з масиву, а не посилатися на об'єкт вузла теж ...
shaneonabike

1

Існує простіший спосіб досягти цього через модуль режимів перегляду 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

1

Пропозиція шаблону для режиму перегляду «тизер»:

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

За замовчуванням у режимі перегляду «тизер» використовується звичайний node.tpl.phpшаблон, тому ви можете скопіювати цей файл, щоб розпочати роботу.

Ви можете переглянути всі пропозиції шаблонів, увімкнувши theme_debugрежим, https://www.drupal.org/node/223440#theme-debug

Коли ви переглядаєте-джерело: на сторінці ви повинні побачити коментарі HTML, де відображається весь список пропозицій шаблонів, які Drupal розглядав.


0

Рішення Клайва правильне. Але якщо ви хочете, щоб нові пропозиції були усунені після пропозицій за замовчуванням, ви повинні додати їх в останні позиції масиву:

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');
  }
}

Таким чином ви уникаєте, щоб ваш тизерний вузол збігався (і використовує, якщо він існує) вузол - [тип] .tpl.php перед вузлом - [тип] - teaser.tpl.php

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.