web-dev-qa-db-ja.com

Drupalは、使用するエンティティビューモードをどのようにして知るのですか?

エンティティビューモードが定義されている場合、Drupalはどの方法を使用するかをどのように知るのですか?それらはビューでのみ有用ですか、それともノード表示でも使用できますか?そうであれば、それはテンプレート、またはどこか他の?

4
beth

バックエンドでは、ビューモードがどこでも使用されます node_view($node, $view_mode); が呼び出されます。一般に、呼び出し元はどちらが必要かを指定します。また、システムはデフォルトで"full""teaser"しか認識しないため、これらはコアに組み込まれます。コードには、レンダリングされたコンテンツを取得するときに、すべての表示モードを読み取るオプションがあります。

ビューは、ビューモードが最もよく使用される場所であり、私が最も役立つ場所でもあります。

ノード参照があり、表示を「レンダリングされたノード」に設定すると、表示モードを選択でき、リストからプルします。

パネルでは、「表示されているノード」コンテンツペインの設定に表示モードが表示されます。これは通常、ノードオーバーライドページで使用され、node/$nidパスの表示モードを指定する唯一の方法です。

他の場所もあると思います。特にCToolsのコンテンツタイプを利用するモジュールではそうです。

4
mpdonadio

ほんの少しのグルーコードを使用すると、特定のノードテンプレートファイルをさまざまなビューモードに使用できるため、非常に便利になります。

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以外の一般的なケースはすべてカバーされています。

5
Clive