2017-01-12 2 views
0

나는 사용자 정의 번들 (콘텐츠 형식)을 생성하고 난 개인 저장 장치에 저장된 필드드루팔 8은 필드를 두 번

그 필드의

하나의 파일 형식 필드는, 비디오 파일이를 만들었습니다. 비디오를 볼 수 있도록 videojs module을 설치했습니다.

이 필드는 노드 페이지에 두 번 표시해야합니다. 사용자가 파일을 다운로드 할 수있는 일반 파일 포맷터에 하나, 그리고 비디오를 재생해야합니다. 일반 파일 포맷터로 설정하고 비디오 플레이어에 다시 표시 할 나뭇 가지 템플릿을 사용자 정의하기로 결정했습니다.

I 노드에서이 코드로 설정 포맷터 (일반 파일)로 두 번 보여 달성 - mybundle - 나는 그것이 필드처럼 쉬운 일이 될 것이라고 생각

{{ content.field_sd_video }} 

full.html.twig 템플릿 + 포맷터 :

{{ content.field_sd_video|videojs_formatter }} 

그러나 나는 이것을 달성 할 수있는 간단한 방법을 찾을 수 없습니다. 더 까다로운 방법 일 수도 있겠습니까?

답변

0

마지막으로 해결책을 찾았습니다.이 코드를 전처리 노드 함수에 넣었습니다. 내 경우 노드에

{{ video_caption }} 

- mybundle - 전체 :

function mytheme_preprocess_node(&$variables) { 

    $variables['video_caption'] = $variables['node']->get('field_video') 
     ->view(array(
      'label' => 'hidden', 
      'type' => 'videojs_player_list' 
     )); 
} 

)와 나는 단지 나뭇 가지 파일에이 줄을 추가 할 수있다, 그것은 방법을 알고 쉽게 쉽게,하지만이어야한다 사람들을 위해

.html.twig 템플릿

여기 그것은 나를 Twig debugging에 대한 유용한했다 41 페이지
에 내가 Twig Recipes에서 영감을했다 비슷한 뭔가를 찾고 도착합니다. kint 및 노드 변수 및 정보를 래핑하는 데 사용되는 클래스로 재생. 그런 다음이 필드가 [FileFieldItemList]와 함께 제공되고 [EntityViewBuilderInterface]를 사용하는보기 메서드를 찾았습니다.

관련 문제