エンティティビューモードが定義されている場合、Drupalはどの方法を使用するかをどのように知るのですか?それらはビューでのみ有用ですか、それともノード表示でも使用できますか?そうであれば、それはテンプレート、またはどこか他の?
バックエンドでは、ビューモードがどこでも使用されます node_view($node, $view_mode);
が呼び出されます。一般に、呼び出し元はどちらが必要かを指定します。また、システムはデフォルトで"full"
と"teaser"
しか認識しないため、これらはコアに組み込まれます。コードには、レンダリングされたコンテンツを取得するときに、すべての表示モードを読み取るオプションがあります。
ビューは、ビューモードが最もよく使用される場所であり、私が最も役立つ場所でもあります。
ノード参照があり、表示を「レンダリングされたノード」に設定すると、表示モードを選択でき、リストからプルします。
パネルでは、「表示されているノード」コンテンツペインの設定に表示モードが表示されます。これは通常、ノードオーバーライドページで使用され、node/$nid
パスの表示モードを指定する唯一の方法です。
他の場所もあると思います。特にCToolsのコンテンツタイプを利用するモジュールではそうです。
ほんの少しのグルーコードを使用すると、特定のノードテンプレートファイルをさまざまなビューモードに使用できるため、非常に便利になります。
function MYMODULE_preprocess_node(&$vars) {
if($vars['view_mode'] == 'some_type') {
$vars['theme_hook_suggestions'][] = 'node__' . $vars['node']->type . '__some_type';
}
}
これにより、node--article--some-type.tpl.php
のような名前のテンプレートファイルを、そのビューモード専用に使用できるようになります。
そのMPD以外の一般的なケースはすべてカバーされています。