Was ist der Vorlagenvorschlag für den Ansichtsmodus "Teaser" des Knotens?

37

node - [type | nodeid] .tpl.php richtet sich nach dem Standardansichtsmodus des Knotens. Ich möchte jedoch die Vorlage für den Teaser-Ansichtsmodus überschreiben.

Was ist der Vorlagenvorschlag (.tpl.php-Datei) für den Teaser-Ansichtsmodus?

Gilzero
quelle

Antworten:

57

Ich glaube nicht, dass es standardmäßig einen gibt, aber Sie können einfach einen in Ihre template.php-Datei einfügen:

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

Damit können Sie eine Vorlagendatei wie folgt verwenden: node--[type|nodeid]--teaser.tpl.php

Clive
quelle
3
Sie können die Variablen auch einfach direkt aus dem Array ziehen, anstatt auch auf das
Knotenobjekt
1

Es gibt einen einfacheren Weg, dies über das Modul Entitätsansichtsmodi zu erreichen.

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

Der Vorlagenvorschlag für einen "Teaser" -Anzeigemodus lautet:

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

Standardmäßig verwendet der Ansichtsmodus "Teaser" die reguläre node.tpl.phpVorlage, sodass Sie diese Datei kopieren können, um loszulegen.

Sie können alle Vorlagenvorschläge theme_debuganzeigen, indem Sie den Modus https://www.drupal.org/node/223440#theme-debug aktivieren

Wenn Sie Quelltext anzeigen: Auf der Seite sollten HTML-Kommentare angezeigt werden, die die gesamte Liste der von Drupal berücksichtigten Vorlagenvorschläge enthalten.

Zapo
quelle
0

Clives Lösung ist richtig. Wenn Sie jedoch möchten, dass die neuen Vorschläge nach Standardvorschlägen ausgewertet werden, müssen Sie sie an den letzten Positionen des Arrays hinzufügen:

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

Auf diese Weise vermeiden Sie, dass Ihr Teaserknoten mit node - [type] .tpl.php vor node - [type] - teaser.tpl.php übereinstimmt (und falls vorhanden verwendet)

Giucas
quelle