Qual é a sugestão de modelo para o modo de exibição 'teaser' do nó?

37

node - [type | nodeid] .tpl.php direciona para o modo de visualização padrão do nó. No entanto, quero substituir o modelo para o modo de exibição de teaser.

Qual é a sugestão de modelo (arquivo .tpl.php) para o modo de exibição 'teaser'?

Gilzero
fonte

Respostas:

57

Eu não acho que exista um por padrão, mas você pode facilmente adicionar um no seu arquivo 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';
  }
}

Isso permitirá que você use um arquivo de modelo como: node--[type|nodeid]--teaser.tpl.php

Clive
fonte
3
Você também pode simplesmente puxar as variáveis ​​diretamente da matriz, em vez de fazer referência ao objeto nó também ...
shaneonabike
1

Há uma maneira mais fácil de fazer isso, através do módulo de modos de exibição de entidade.

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
fonte
1

A sugestão de modelo para o modo de exibição "teaser" é:

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

Por padrão, o modo de exibição "teaser" usa o node.tpl.phpmodelo regular , para que você possa copiar esse arquivo para começar.

Você pode ver todas as sugestões de modelos ativando o theme_debugmodo, https://www.drupal.org/node/223440#theme-debug

Quando você visualiza o código-fonte: na página, você deve ver comentários em HTML que mostram toda a lista de sugestões de modelos consideradas pelo Drupal.

zapo
fonte
0

A solução de Clive está correta. Mas se você deseja que as novas sugestões sejam avaliadas após as sugestões padrão, adicione-as nas últimas posições da matriz:

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

Dessa maneira, você evita que o seu nó teaser corresponda (e use, se existir) ao nó - [type] .tpl.php antes do node - [type] - teaser.tpl.php

giucas
fonte