'Teaser' düğümü düğümü için şablon önerisi nedir?


37

node - [type | nodeid] .tpl.php , düğümün varsayılan görünüm modunu hedefler. Ancak teaser görüntüleme modu için şablonu geçersiz kılmak istiyorum.

'Teaser' görüntüleme modu için şablon önerisi (.tpl.php dosyası) nedir?

Yanıtlar:


57

Varsayılan olarak bir tane olduğunu sanmıyorum ama template.php dosyanıza kolayca ekleyebilirsiniz:

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

Bu, şöyle bir şablon dosyası kullanmanıza izin verecektir: node--[type|nodeid]--teaser.tpl.php


3
Ayrıca değişkenleri, düğüm nesnesine de gönderme yapmak yerine doğrudan diziden
çekebilirsiniz

1

Varlık görünümü modları modülü aracılığıyla bunun daha kolay bir yolu var.

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

Bir "teaser" görünüm modu için şablon önerisi:

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

Varsayılan olarak "teaser" görünüm modu normal node.tpl.phpşablonu kullanır , böylece başlamak için bu dosyayı kopyalayabilirsiniz.

Tüm şablon önerilerini theme_debugmodu açarak görebilirsiniz , https://www.drupal.org/node/223440#theme-debug

Ne zaman :-kaynağını görüntülemek şablon önerilerin tamamı liste kabul Drupal gösterileri HTML yorumları görmek gerekir sayfada.


0

Clive'nin çözümü doğru. Ancak, yeni önerilerin varsayılan önerilerden sonra değerlendirilmesini istiyorsanız, bunları dizinin son konumlarına eklemelisiniz:

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

Bu şekilde, teaser düğümünüzün eşleşmesinden (ve varsa, kullanır) düğümden - [type] .tpl.php düğümden önce - [type] - teaser.tpl.php

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.