node-[type | nodeid] .tpl.phpノードのデフォルトの表示モードをターゲットにします。ただし、ティーザービューモードのテンプレートを上書きしたいと思います。
「ティーザー」ビューモードのテンプレートの提案(.tpl.phpファイル)は何ですか?
デフォルトでは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
「ティーザー」ビューモードのテンプレートの提案は次のとおりです。
node--[type]--teaser.tpl.php
デフォルトでは、「ティーザー」ビューモードは通常のnode.tpl.php
テンプレートを使用するため、そのファイルをコピーして開始できます。
theme_debug
モードをオンにすると、すべてのテンプレートの提案を表示できます https://www.drupal.org/node/223440#theme-debug
ページにview-source:すると、テンプレートの提案の全リストを示すHTMLコメントが表示されますDrupal検討した。
エンティティビューモードモジュールを使用すると、これに簡単な方法があります。
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
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と一致する(存在する場合は使用する)ことを回避します。