【问题标题】:drupal 8 show field twicedrupal 8显示字段两次
【发布时间】:2017-01-12 12:15:42
【问题描述】:

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

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

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

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

{{ content.field_sd_video }}

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

{{ content.field_sd_video|videojs_formatter }}

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

【问题讨论】:

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


    【解决方案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 Recipes 的启发
    这对我很有用Twig debugging。使用 kint 和节点变量以及用于包装信息的类。然后发现字段自带[FileFieldItemList] 然后发现view方法使用了[EntityViewBuilderInterface]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-12
      • 2018-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-31
      • 1970-01-01
      相关资源
      最近更新 更多