我创建了一个自定义包(内容类型)和我创建的字段
其中一个字段是文件类型字段,是一个视频文件,存储在私有存储中。我安装了videojs module以允许观看视频。
我需要在节点页面中显示此字段两次。一个在通用文件格式化程序中,允许用户下载文件,我还需要播放视频。我决定将其设置为通用文件格式化程序并自定义树枝模板,以便再次使用视频播放器显示。
我使用设置格式化程序(通用文件)在节点中使用此代码显示两次 - mybundle - full.html.twig模板
{{ content.field_sd_video }}
我认为像field + formatter一样简单:
{{ content.field_sd_video|videojs_formatter }}
但我无法找到实现这一目标的简单方法。可能是它的必要方式更加棘手吗?
答案 0 :(得分:1)
我终于找到了解决方案,我把这段代码放在预处理节点函数中。它必须简单,但不容易知道如何;)
function mytheme_preprocess_node(&$variables) {
$variables['video_caption'] = $variables['node']->get('field_video')
->view(array(
'label' => 'hidden',
'type' => 'videojs_player_list'
));
}
我只需要在twig文件中添加这一行:
{{ video_caption }}
在我的案例节点 - mybundle - full.html.twig模板
对于那些到这里寻找类似的东西 第41页的Twig Recipes启发了我的灵感 这对我来说很有用Twig debugging。使用kint和节点变量以及用于包装信息的类。然后我发现该字段带有[FileFieldItemList]然后我找到了使用[EntityViewBuilderInterface]的视图方法