web-dev-qa-db-fra.com

Quelle est la suggestion de modèle pour le mode d'affichage «teaser» du nœud?

node ​​- [type | nodeid] .tpl.php cible le mode d'affichage par défaut du noeud. Cependant, je veux remplacer le modèle pour le mode d'affichage d'accroche.

Quelle est la suggestion de modèle (fichier .tpl.php) pour le mode d'affichage 'teaser'?

37
gilzero

Je ne pense pas qu'il y en ait un par défaut mais vous pouvez facilement en ajouter un dans votre fichier 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';
  }
}

Cela vous permettra d'utiliser un fichier modèle comme: node--[type|nodeid]--teaser.tpl.php

57
Clive

La suggestion de modèle pour un mode d'affichage "teaser" est la suivante:

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

Par défaut, le mode d'affichage "teaser" utilise le modèle node.tpl.php Normal, vous pouvez donc copier ce fichier pour commencer.

Vous pouvez voir toutes les suggestions de modèles en activant le mode theme_debug, https://www.drupal.org/node/223440#theme-debug

Lorsque vous view-source: sur la page, vous devriez voir des commentaires HTML qui montrent la liste complète des suggestions de modèles Drupal pris en considération.

1
zapo

Il existe un moyen plus simple de le faire, via le module des modes de vue Entité.

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
fnandogp

La solution de Clive est correcte. Mais si vous voulez que les nouvelles suggestions soient évaluées après les suggestions par défaut, vous devez les ajouter aux dernières positions du tableau:

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

De cette façon, vous évitez que votre nœud d'accroche corresponde (et utilise, s'il existe) nœud - [type] .tpl.php avant nœud - [type] - teaser.tpl.php

0
giucas