web-dev-qa-db-ja.com

twigテンプレートでビューモードを確認する方法は?

BasicおよびArticleコンテンツタイプで使用される1つのフィールド(field_tabs)があります。基本ページコンテンツタイプにはカスタムビューモード(view_mode_vertical)があり、記事コンテンツタイプには別のカスタムビューモード(view_mode_horizo​​ntal)があります。

基本ページ(デフォルトの表示モード)ディスプレイの管理

  • field_tabs(ビューモード= view_mode_vertical)
  • 題名

記事(デフォルトの表示モード)ディスプレイの管理

  • field_tabs(ビューモード= view_mode_horizo​​ntal)
  • 題名

field.html.twig では、どのようにして表示モードを検出できますか?

私たちが探求した2つのオプションは、 ノードテンプレート またはフィールドテンプレート(フィールドを使用)でした。これを行うには、view_modeを検出するロジックを1か所に追加するだけで済みます。 3番目または4番目のview_modeを追加する場合は、コードに別のelseif(またはスイッチケース)を追加するだけです。

サンプルTwig探していたコード:

{% if view_mode == 'view_mode_vertical' %}
  <div class="tabs__vertical">...</div>
{% else %}
  <div class="tabs__horizontal">...</div>
{% endif %}
2
usernameabc

Field.html.twigで、ビューモードをどのように検出できますか?

フィールドテンプレートには、ノードテンプレートのようなビューモードの最上位の変数はありません。あなたはそれを作成することができ、あなたのtwigコードはうまくいくはずです:

{% set view_mode = element['#view_mode'] %}

別のオプションは、テンプレート名の提案を追加することです。 表示モードのフィールドテンプレート を参照してください。

どちらも有効なオプションです。 Twigロジックに大きく依存する多くのプロジェクトがありますが、他のプロジェクトはPHPプリプロセスとテンプレート名の提案フックで好みます。

6
4k4