page.html.twig 내에 노드 필드를 렌더링하십시오.


12

콘텐츠 유형 (field_hero_image)에 이미지 필드가 있습니다.

node.html.twig 파일에서 렌더링하고 싶지 않습니다. 그러나 page.html.twig 파일로 렌더링하고 싶습니다. 특히 페이지 제목과 함께 렌더링하고 싶습니다.

page.html.twig 파일에서 어떤 코드를 사용하여 노드 레벨 필드에 액세스하고 렌더링합니까?

(유사한 질문이 게시되어 있지만 문제를 해결하기 위해 제공된 답변을 사용할 수 없습니다.)

이것은 Drupal 8 테마입니다.


2
@kiamlaluno-왜 내 질문을 편집 했습니까? 제목과 질문에 "Drupal 8"이 있으면 잠재적 인 asnwer 공급자에게 명백하고 Drupal 6 및 7 콘텐츠가 널리 보급되어 있기 때문에 Google에서 훨씬 쉽게 찾을 수 있습니다. Drupal 8 질문 / 답변을 명확하게하는 것은 D8에 특정한 답변을 찾는 커뮤니티에 도움이됩니다. 그것을 바꾸는 당신의 추론이 무엇인지 궁금했습니다.
kraftybasterd

질문 제목에 태그를 복제하지 마십시오. 태그는 질문이 보이는 모든 곳에서 볼 수 있으므로 질문 제목에도 태그를 사용할 필요가 없습니다.
kiamlaluno

2
분명히, 나는 여기에 처음이지만 ... 메타 태그 (이 경우 "8")가 검색 ​​엔진 결과에 도움이됩니까? Drupal 8 또는 Drupal 7을 포함하는 콘텐츠 제목은 사람들이 Google을 통해 답변을 검색하는 데 도움이 될 수 있습니다.
kraftybasterd 2016 년

답변:


26

좀 더 많은 연구를 한 후에, 나는 다른 질문과 drupal.org에서 내가하고 싶은 일을 달성하기에 충분한 조각을 찾을 수있었습니다.

이 답변에는 사전 처리가 필요하지 않으므로 mytheme.theme 파일에 코드를 추가 할 필요가 없습니다.
이러한 모든 변수는 기본적으로 page.html.twig에서 이미 액세스 할 수 있습니다.

page.html.twig 내에서 필드의 기본값을 렌더링하려면 일반적으로와 같이 Twig 변수를 사용합니다 {{ node.field_some_name.value }}.

이미지 필드가 있고 page.html.twig 템플릿 내의 해당 필드에 저장된 이미지의 URL을 렌더링하려면을 사용 {{ file_url(node.field_some_image.entity.fileuri) }}합니다.

마지막으로 page.html.twig 템플릿 내에서 노드 제목을 렌더링하려면을 사용 {{ node.label }}합니다.

또한 특정 문제에 대해 일부 Twig 조건을 사용하는 방법을 배웠지만이 질문 / 답변 범위를 벗어납니다.


나는 회의적이었다. D7에서 이런 종류의 것은 항상 전처리 기능에 있어야한다는 인상을 받았다. 그러나 file_url()문서 의 예제 ( drupal.org/docs/8/theming/twig/functions-in-twig-templates )는 정확하게 이것을 수행합니다.
Graham C

특정 컨텐츠 유형을 반복하고 필드 값을 page.html.twig어떻게 출력 합니까?
Naourass Derouichi

2

이 작업에는 세 가지 편리한 방법이 있으며,이 방법을 사용하면 복잡한 렌더 배열에서 시간을 절약 할 수 있습니다.

  1. 하위 모듈 ds_extras를 사용하는 Display Suite를 사용하면 다른 표시 모드 (예 : 영웅 이미지를 포함하는 블록) 인 블록 ( "블록 영역")을 영웅 영역에 할당 할 수 있습니다. 따라서 한 번에 두 가지 다른 디스플레이 모드가 표시됩니다. 이렇게하면 일부 전처리 후크가 발생하지 않을 수 있습니다.

  2. twig_tweak 모듈은 크게하는 등의 작업을 단순화하고 필드 값을 쉽게 나뭇 가지 문을 제공 할 수 있습니다. 몇 가지 일반적인 용도로 치트 시트 를 살펴보십시오 {{ drupal_field('field_image', 'node', 1) }}. 함수 서명은 다음과 같습니다.drupalField($field_name, $entity_type, $id = NULL, $view_mode = 'default', $langcode = NULL)

  3. twig_field_value의 모듈은 간단한 나뭇 가지 문을합니다. README.txt 당 :<img src={{ file_url(content.field_image|field_target_entity.uri.value) }} alt={{ content.field_image|field_raw('alt') }} />

내가 이것을 이미 알고 있었다면, 그것은 많은 시간을 절약했을 것입니다!


1
이것이 정답입니다. 내 경험상 필드를 렌더링{{ node.field_some_name.value }} 하지 않습니다 . 전체 테마 시스템 (전처리 기능, 템플릿 등)을 호출하지 않습니다. OTOH, 모듈 을 사용하면 다음 과 같이 완전히 렌더링 된 필드를 얻을 수 있습니다.twig_tweak{{ node.field_some_name|view }}
kentr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.