Qual è il suggerimento del modello per la modalità di visualizzazione 'teaser' del nodo?


37

node - [type | nodeid] .tpl.php punta alla modalità di visualizzazione predefinita del nodo. Tuttavia, voglio sovrascrivere il modello per la modalità di visualizzazione teaser.

Qual è il suggerimento del modello (file .tpl.php) per la modalità di visualizzazione "teaser"?

Risposte:


57

Non credo che ce ne sia uno di default ma puoi facilmente aggiungerne uno nel tuo file 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';
  }
}

Ciò ti consentirà di utilizzare un file modello come: node--[type|nodeid]--teaser.tpl.php


3
Potresti anche estrarre le variabili direttamente dall'array piuttosto che fare riferimento anche all'oggetto nodo ...
shaneonabike,

1

C'è un modo più semplice per farlo, attraverso il modulo modalità di visualizzazione 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

Il suggerimento del modello per una modalità di visualizzazione "teaser" è:

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

Per impostazione predefinita, la modalità di visualizzazione "teaser" utilizza il node.tpl.phpmodello normale , quindi è possibile copiare quel file per iniziare.

Puoi visualizzare tutti i suggerimenti sui modelli attivando la theme_debugmodalità, https://www.drupal.org/node/223440#theme-debug

Quando visualizzi-source: nella pagina dovresti vedere i commenti HTML che mostrano l'intero elenco di suggerimenti di template che Drupal ha preso in considerazione.


0

La soluzione di Clive è corretta. Ma se si desidera che i nuovi suggerimenti vengano valutati dopo i suggerimenti predefiniti, è necessario aggiungerli nelle ultime posizioni dell'array:

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

In questo modo eviti che il tuo nodo teaser corrisponda (e usi, se esiste) nodo - [tipo] .tpl.php prima del nodo - [tipo] - teaser.tpl.php

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.