web-dev-qa-db-ja.com

twigテンプレートの無効なフィールドの値にアクセスします

Paragraphs module を使用してコンポーネントを作成しています。次に、コンテンツタイプを作成し、参照フィールドとして段落を追加します。

段落のフォームには、コンテンツ作成者がdivの背景色の色名を選択できるフィールド(リスト)があります。各段落には3つの値(pacific_blue、smokey_white、white)があります。

ただし、選択した値をサイトに表示せずに取得しようとしています。

フィールドが無効になっていない限り、このコードを使用して値を取得し、適切な背景色でdivをスタイルするクラスを追加できます。

<div class="c14a {{ content.group_wrap.field_color_backgroud.0["#markup"] }}">
  <div{{ attributes.addClass(classes) }}>
      {{ content }}
  </div>
</div>

では、「管理表示」で無効になっているフィールドの値を取得するにはどうすればよいですか?

どうも...

1
kevinius

わかりました。自分の質問に答えるつもりです。私の状況では、これが最もエレガントなオプションだと思います。

解決策は'not' disable any fieldです。次に、テンプレートで必要なフィールドを出力します。このように、あなたは価値がありますが、それをビジターに出力していません。

<div class="c14a {{ content.field_background.0["#markup"] }}">
  <div{{ attributes.addClass(classes) }}>

    {{ content.field_title }}

  </div>
</div>
0
kevinius

あなたにそれを追加してみてください hook_preproccess_node 変数に。

次のスニペットのようなものがあなたを助けるかもしれません。

THEMENAME.theme

function THEMENAME_preprocess_node(&$vars) {
    $node = $vars['node'];
    if(isset($vars['node']) && $vars['node']->getType()=='YOUR_CONTENT_TYPE_MACHINE_NAME') {
        $values = $node->field_color_backgroud->entity->getValue();
        $vars['myvar'] = $values[0];
    }

}

次に、TWIGファイル{{ myvar }} 使えるようになる。

0
Yusef

Display SuiteとParagraphsを一緒に使用していて、フォーマットと作成した特別なトークンフィールドを保持したい場合は、自己回答の質問を拡張して、without twig =フィルタは、表示したくないフィールドを除外するのに最適です。CSSクラスとしていくつかのフィールドを使用し、それらを非表示にするカスタムテンプレートを次に示します。

<{{ ds_content_wrapper }}{{ attributes.addClass('ds-1col', 'clearfix') }}>
  {{ title_suffix.contextual_links }}
  {% set bgcolor = content.field_background_color.0['#markup'] %} 
  {% set angles = content.field_skew.0['#markup'] %} 
  <div class="wrapper {{ bgcolor | lower }} {{ angles | lower | replace({' ':'_'}) }}">
     {{ ds_content | without('field_background_color', 'field_skew') }}
  </div>   
</{{ ds_content_wrapper }}>
0