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


37

node-[type | nodeid] .tpl.phpは、ノードのデフォルトの表示モードをターゲットにします。ただし、ティーザービューモードのテンプレートをオーバーライドしたいです。

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

回答:


57

デフォルトではあるとは思いませんが、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


3
また、単に...ストレート配列からではなく、あまりにもノードオブジェクトを参照する変数を引くことができ
shaneonabike

1

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

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

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

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

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

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

あなたはときに、ソースを表示:ページにあなたはDrupalはみなさテンプレートの提案のショーはリスト全体というHTMLのコメントが表示されるはずです。


0

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.