drupal 8显示两次

时间:2017-01-12 12:15:42

标签: drupal-theming drupal-8 drupal-templates

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

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

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

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

{{ content.field_sd_video }}

我认为像field + formatter一样简单:

{{ content.field_sd_video|videojs_formatter }}

但我无法找到实现这一目标的简单方法。可能是它的必要方式更加棘手吗?

1 个答案:

答案 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]的视图方法