0

我创建了一个自定义包(内容类型)并创建了字段

其中一个字段是文件类型字段,是视频文件,存储在私有存储中。我安装了videojs 模块以允许观看视频。

我需要在节点页面中显示该字段两次。通用文件格式化程序中的一种,允许用户下载文件,我还需要播放视频。我决定设置为通用文件格式化程序并自定义树枝模板以再次使用视频播放器显示。

我实现了在节点--mybundle--full.html.twig 模板中使用设置格式化程序(通用文件)显示两次

{{ content.field_sd_video }}

我认为这会像字段+格式化程序这样简单:

{{ content.field_sd_video|videojs_formatter }}

但我找不到实现这一目标的简单方法。可能这是一种更棘手的方式吗?

4

1 回答 1

1

我终于找到了解决方案,我把这段代码放在了预处理节点函数中。它必须很容易,但并不容易知道如何;)

function mytheme_preprocess_node(&$variables) {

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

我只需要在树枝文件中添加这一行:

{{ video_caption }}

在我的例子中 node--mybundle--full.html.twig 模板

对于那些来到这里寻找类似东西的人,我受到第 41 页的Twig 食谱
的启发, 这对我Twig 调试很有用。使用 kint 和节点变量以及用于包装信息的类。然后我发现该字段带有[FileFieldItemList] 然后我找到了使用[EntityViewBuilderInterface]的视图方法

于 2017-01-13T11:22:15.293 回答