Каков шаблон шаблона для режима просмотра узла "тизер"?

37

node - [type | nodeid] .tpl.php предназначается для режима просмотра по умолчанию для узла. Однако я хочу переопределить шаблон для режима просмотра тизера.

Что такое шаблонное предложение (файл .tpl.php) для режима просмотра «тизер»?

gilzero
источник

Ответы:

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
fnandogp
источник
1

Шаблонное предложение для режима просмотра "тизер":

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

По умолчанию режим просмотра «тизер» использует обычный node.tpl.phpшаблон, поэтому вы можете скопировать этот файл, чтобы начать работу.

Вы можете увидеть все предложения шаблона, включив theme_debugрежим https://www.drupal.org/node/223440#theme-debug

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

ZAPO
источник
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');
  }
}

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

giucas
источник