2017-01-12 48 views
0

我創建了一個自定義的包(內容類型)和我創建領域Drupal的8秀場兩次

其中一個領域是一個文件類型字段,是視頻文件,存儲在私有存儲設備。我安裝了videojs module以允許觀看視頻。

我需要在節點頁面顯示兩次這個字段。一個在通用文件格式化程序中,允許用戶下載文件,而且我還需要播放視頻。我決定設置爲通用文件格式化程序,並自定義小枝模板以再次與視頻播放器一起顯示。

我實現與設置的格式(通用文件)使用此代碼的節點兩次展示區 - mybundle - full.html.twig模板

{{ content.field_sd_video }} 

我認爲這將是東西容易像場+ formatter:

{{ content.field_sd_video|videojs_formatter }} 

但我找不到什麼簡單的方法來實現這一點。可能是需要更棘手的方式?

回答

0

我終於找到了解決方案,我把這個代碼放在預處理節點函數中。它必須是容易的,但不容易知道如何;)

function mytheme_preprocess_node(&$variables) { 

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

,我只需要添加此行樹枝文件:

{{ video_caption }} 

在我的情況節點 - mybundle - 全.html.twig模板

對於那些來到這裏尋找類似的東西 我被Twig Recipes啓發41頁
上這對我來說Twig debugging有用。使用kint和節點變量以及用於包裝信息的類。然後我發現該字段附帶了[FileFieldItemList],然後我找到了使用[EntityViewBuilderInterface]的視圖方法