Jaka jest sugestia szablonu dla trybu podglądu „zwiastuna”?


37

node - [typ | nodeid] .tpl.php kieruje do domyślnego trybu widoku węzła. Chcę jednak zastąpić szablon w trybie widoku zwiastuna.

Jaka jest sugestia szablonu (plik .tpl.php) dla trybu widoku zwiastuna?

Odpowiedzi:


57

Nie wydaje mi się, aby taki był domyślnie, ale można go łatwo dodać do pliku 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';
  }
}

To pozwoli ci użyć pliku szablonu, takiego jak: node--[type|nodeid]--teaser.tpl.php


3
Możesz także wyciągnąć zmienne prosto z tablicy zamiast odwoływać się również do obiektu węzła ...
shaneonabike

1

Jest na to łatwiejszy sposób dzięki modułowi trybów widoku encji.

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

Propozycja szablonu dla trybu widoku „zwiastuna” to:

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

Domyślnie tryb widoku „zwiastuna” używa zwykłego node.tpl.phpszablonu, więc możesz skopiować ten plik, aby rozpocząć.

Wszystkie sugestie dotyczące szablonów można zobaczyć, włączając theme_debugtryb, https://www.drupal.org/node/223440#theme-debug

Podczas przeglądania źródła: na stronie powinieneś zobaczyć komentarze HTML, które pokazują całą listę sugestii szablonów rozważanych przez Drupala.


0

Rozwiązanie Clive jest poprawne. Ale jeśli chcesz, aby nowe sugestie były oceniane po sugestiach domyślnych, musisz je dodać w ostatnich pozycjach tablicy:

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

W ten sposób unikasz, że twój węzeł zwiastuna jest zgodny (i używa, jeśli istnieje) węzeł - [typ] .tpl.php przed węzłem - [typ] - teaser.tpl.php

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.