Quelle est la suggestion de modèle pour le mode de vue 'teaser' du noeud?

37

node - [type | nodeid] .tpl.php cible le mode d'affichage par défaut du nœud. Cependant, je souhaite remplacer le modèle pour le mode d'affichage teaser.

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

Gilzero
la source

Réponses:

57

Je ne pense pas qu'il en existe 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

Clive
la source
3
Vous pouvez également simplement extraire les variables directement du tableau plutôt que de référencer l'objet nœud aussi ...
shaneonabike
1

Il existe un moyen plus simple d’y parvenir, grâce au module Modes de vue de l’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
fnandogp
la source
1

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 "accroche" utilise le node.tpl.phpmodèle standard , vous pouvez donc copier ce fichier pour commencer.

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

Lorsque vous affichez la source: sur la page, vous devriez voir des commentaires HTML montrant la liste complète des suggestions de modèles que Drupal a envisagées.

zapo
la source
0

La solution de Clive est correcte. Mais si vous souhaitez que les nouvelles suggestions soient évaluées après les suggestions par défaut, vous devez les ajouter dans les 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 teaser corresponde (et utilise, s’il existe) nœud - [type] .tpl.php avant nœud - [type] - teaser.tpl.php

Giucas
la source