web-dev-qa-db-ja.com

Twigで印刷からフィールドを除外する

フィールドテンプレートを上書きしています

views-view-fields--machine_name.html.twig

一部のフィールドを他のフィールドとは異なるdivにレンダリングしたい。フィールドを2回レンダリングしたくありません。

<div class="foo">
  {{ fields.field_events_date_start.content }}
  {{ fields.field_events_date_start_1.content }}
</div>

{% for field in fields -%}
  {{ field.separator }}
  {%- if field.wrapper_element -%}
    <{{ field.wrapper_element }}{{ field.wrapper_attributes }}>
  {%- endif %}
  {%- if field.label -%}
    {%- if field.label_element -%}
      <{{ field.label_element }}{{ field.label_attributes }}>{{ field.label }}{{ field.label_suffix }}</{{ field.label_element }}>
    {%- else -%}
      {{ field.label }}{{ field.label_suffix }}
    {%- endif %}
  {%- endif %}
  {%- if field.element_type -%}
    <{{ field.element_type }}{{ field.element_attributes }}>{{ field.content }}</{{ field.element_type }}>
  {%- else -%}
    {{ field.content }}
  {%- endif %}
  {%- if field.wrapper_element -%}
    </{{ field.wrapper_element }}>
  {%- endif %}
{%- endfor %}

これらのフィールドをビューの表示から除外すると、以前にレンダリングしたときと通常のコンテンツ領域の両方で非表示になります。

{{ content|without('field_events_date_start,field_events_date_start_1') }}

...コンテンツではなくフィールドをレンダリングしているため、機能しません。

フィールドを以前にレンダリングし、後で除外するにはどうすればよいですか?

3

fieldsから2つのフィールドを削除する必要があります。

<div class="foo">
  {{ fields.field_events_date_start.content }}
  {{ fields.field_events_date_start_1.content }}
</div>

{% for field in fields|without('field_events_date_start',  field_events_date_start_1') %}
  ...
{% endfor %}
5
4k4

これは私が先週行ったこの例です。

ファイル名_views-view-fields--view_name--display_id.html.twig_つまり、私の場合は_views-view-fields--acquia-search--results.html.twig_です。

_{{ fields.title.content }}
<p class="search-result__item-description">{{ fields.search_api_excerpt.content }}</p>
<ul class="search-result__item-meta">
  <li class="search-result__item-link"><span class="label">View More:</span> {{ fields.url.content }}</li>
  <li class="search-result__item-date"><span class="label">Date Modified:</span> {{ fields.changed.content }}</li>
</ul>
_

私は自分の裁量でフィールドを印刷し、独自のマークアップを提供しています。

Twig XDebug をインストールすると、{{ breakpoint() }}をテンプレートにドロップして変数を確認できます。

0
Kevin