views-views-unformatted--view-machine-name.html.twig에서 각 필드 값을 얻는 방법은 무엇입니까?


19

나뭇 가지 파일이 있습니다 : views-view-unformatted--view-machine-name.html.twig

{#
/**
 * @file
 * Default theme implementation to display a view of unformatted rows.
 *
 * Available variables:
 * - title: The title of this group of rows. May be empty.
 * - rows: A list of the view's row items.
 *   - attributes: The row's HTML attributes.
 *   - content: The row's content.
 * - view: The view object.
 * - default_row_class: A flag indicating whether default classes should be
 *   used on rows.
 *
 * @see template_preprocess_views_view_unformatted()
 *
 * @ingroup themeable
 */
#}
{% if title %}
  <h3>{{ title }}</h3>
{% endif %}
{% for row in rows %}
  {%
    set row_classes = [
      default_row_class ? 'views-row',
    ]
  %}
  <div{{ row.attributes.addClass(row_classes) }}>
    {{ row.content }}
  </div>
{% endfor %}

다음 과 같이 쉼표로 구분하여 1 행에 Title있고 body 필드 를 갖고 싶습니다.

제목, 본문

디버깅하는 동안이 뷰에서 'title'또는 'body'또는 다른 필드의 값을 얻으려면 어떻게해야합니까?

kint (title)와 kint (body)를 사용했지만 작동하지 않습니다. debug = TRUE;서비스 파일 도 만들었 습니다.

그러나 형식화되지 않은 html 나뭇 가지에서 필드 값을 갖는 방법을 알 수는 없습니다.

답변:


20

views-view-unformatted.html.twig 에서 수 있듯이 표시된 주석 코드에도 필드 변수가 없습니다. 따라서이 템플릿은 필드에 사용되지 않습니다.

사용 가능한 변수 :

  • title :이 행 그룹의 제목입니다. 비어있을 수 있습니다.
  • rows :보기의 행 항목 목록입니다.
    • 속성 : 행의 HTML 속성.
    • content : 행의 내용.
  • view : 뷰 객체.
  • default_row_class : 기본 클래스를 행에 사용해야하는지 여부를 나타내는 플래그입니다.

뷰 템플릿에서 필드를 사용하려면 views-view- fields- [view-name]- [machine-name] .html.twig를 사용하십시오 . 여기에서 다음과 같이 필드를 인쇄 할 수 있습니다.

<span>{{ fields.title.content }},</span><span>{{ fields.body.content }}</span>

밑줄이있는 view_name은 유지하고 밑줄이있는 machine-name은 쉼표로 변환
Matoeil

1
views-view-fields.html.twig는 / core / modules / views / templates 폴더에서 복사 한 다음 위와 같이 이름을 바꿀 수 있습니다. machine_name이 foobar 인 지정된 View의 경우 새 이름은 views-view-fields--foobar.html.twig 일 수 있습니다. 명명 규칙에 대한 자세한 정보는 여기에 있습니다 : drupal.org/docs/8/theming/twig/twig-template-naming-conventions
bkudrle

13

Kint를 사용하여 방법을 찾았습니다. views-view--unformatted.html.twig에서 필드 값을 얻을 수 있습니다

특정 필드를 원한다면

텍스트 필드 값을 얻으려면

{{row.content['#row']._entity.field machine name[0].value}}

이미지 필드 src를 얻으려면

{{file_url(row.content['#row']._entity.field machine name.entity.uri.value)}}

이미지 고도, 제목, 너비, 높이를 얻으려면

{{row.content['#row']._entity.field machine name[0].alt/title/width/height}}

참고 : 필드 머신 이름을 필드 머신 이름으로 바꾸십시오.

여러 필드를 반복하려면

{% for i in range(0, 10) %}
  {{ row.content['#row']._entity.body[i].value }}
{% endfor %}

원가를 원한다면

{% for i in range(0, 10) %}
  {{ row.content['#row']._entity.body[i].value|raw }}
{% endfor %}

7

나는 킨트를 사용하는 방법을 알아 냈습니다.

views-view-unformatted.html.twig 내부에서 다음 코드를 사용하여 개별 필드를 표시하십시오.

{% for row in rows %}

{{ row.content['#view'].style_plugin.render_tokens[ loop.index0 ]['{{ YOUR_FIELD_NAME }}'] }}

{% endfor %}

이미지 필드를 사용하는 방법. field_image를 사용하면 출력이 없습니다. 이미지 URL이 표시되거나 렌더링되지 않습니다!
Harish ST

4

다음은 views-view-unformatted.html.twig 파일의 필드 값에 액세스하는 샘플 코드입니다-

{% for row in rows %}
  {% set photo = file_url(row['content']['#row']._entity.field_page_photo.entity.fileuri) %}          
  <li><img src={{ photo }} class="img-responsive img-circle"></li>
{% endfor %}

완전한! 감사합니다. Renuka 고맙습니다.
Niladri Banerjee-Uttarpara

3

나뭇 가지 파일을 사용하여보기를 재정의하려면 세 개의 파일을 만들어야합니다.
1. views-view--foobar.html.twig
2. views-view-unformatted--foobar.html.twig
3. views-view-fields--foobar.html.twig

세 파일 모두의 목적은 다음과 같습니다.
1 : 기본보기 템플리트의 기본 테마 구현.
2 : 형식화되지 않은 행의보기를 표시하는 기본 테마 구현
3 : 모든 필드를 한 줄에 표시하는 기본보기 템플릿.

"views-view-fields--foobar.html.twig"를 사용하여 각 필드를 뷰에 출력해야합니다.

아래는 샘플입니다.

<li>
<p>{{ fields.title.content }}</p> // Title field
<p>{{ fields.body.content }}</p> // Body field
<span>{{ fields.created.content }}</span> // Node authored date field
<a href="{{ fields.path.content }}" class="readmore"> read more </a> // Link to actual page
</li>

안녕하세요, views-view-foobar.html.twig에서 위의 시도를했지만 단일 필드를 인쇄 할 수는 없습니다. kint ()를 사용하여 필드 를 디버깅 하면 맨 위에 'nothing'배열이 표시됩니다.
Shakil Ahmad

0

내 경험상, 엔티티 구조의 일부가 아닌 필드의 값을 views-views-unformatted--view-.html.twig에서 쉽게 쪼개는 방법은 없습니다.

text (plain)필드 를 인쇄하기 위해 매우 . 그래서를 인쇄 할 고통 스럽다 flag_field, entity_reference등등합니다.

전체 뷰 코어 코드를 거치지 않고이를 달성하기 위해이 핵을 만들어야했습니다.

  1. 가짜 일반 텍스트 필드 엔터티 추가
  2. 사용자 정의 모듈에서 뷰 필드 값을 연결하십시오.
  3. 템플릿에서 원하는 값을 (최종적으로) 나뭇 가지

자세한 내용은 /drupal//a/288316/13760

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.