web-dev-qa-db-ja.com

ノード「ティーザー」ビューモードのテンプレートの提案は何ですか?

node-[type | nodeid] .tpl.phpノードのデフォルトの表示モードをターゲットにします。ただし、ティーザービューモードのテンプレートを上書きしたいと思います。

「ティーザー」ビューモードのテンプレートの提案(.tpl.phpファイル)は何ですか?

37
gilzero

デフォルトでは1つはないと思いますが、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';
  }
}

これにより、次のようなテンプレートファイルを使用できるようになります:node--[type|nodeid]--teaser.tpl.php

57
Clive

「ティーザー」ビューモードのテンプレートの提案は次のとおりです。

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

デフォルトでは、「ティーザー」ビューモードは通常のnode.tpl.phpテンプレートを使用するため、そのファイルをコピーして開始できます。

theme_debugモードをオンにすると、すべてのテンプレートの提案を表示できます https://www.drupal.org/node/223440#theme-debug

ページにview-source:すると、テンプレートの提案の全リストを示すHTMLコメントが表示されますDrupal検討した。

1
zapo

エンティティビューモードモジュールを使用すると、これに簡単な方法があります。

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
fnandogp

Cliveのソリューションは正しいです。ただし、新しい提案をデフォルトの提案の後に評価する場合は、配列の最後の位置に追加する必要があります。

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

このようにして、ティーザーノードがnode-[type]-teaser.tpl.phpの前にnode-[type] .tpl.phpと一致する(存在する場合は使用する)ことを回避します。

0
giucas