【问题标题】:Drupal 8: How to render a media entity in the WYSIWYG using Entity Embed module?Drupal 8:如何使用实体嵌入模块在所见即所得中呈现媒体实体?
【发布时间】:2017-01-28 16:49:54
【问题描述】:

问题:如何使用实体嵌入模块在所见即所得中渲染媒体实体?

我已经安装了以下模块:

  • 媒体实体
  • 视频嵌入字段
  • 视频嵌入媒体(与视频嵌入字段捆绑在一起)
  • 彩盒
  • 实体嵌入

我使用视频嵌入字段的类型提供程序创建了一个新的媒体包 - 并将其命名为“YouTube”。我将此字段设置为使用 YouTube 视频。我修改了媒体包的显示,只将视频显示为彩盒。我添加了一些内容并确认媒体正在显示缩略图,并在单击时启动了 Colorbox 模式。

我现在想将实体嵌入基本页面的所见即所得。为此,我:

  • 转到配置 > 内容创作 > 文本编辑器嵌入按钮。
  • 点击了添加嵌入按钮
  • 给它一个标签并在嵌入类型下选择实体
  • 在实体类型下我选择了媒体
  • 在媒体包下,我选择了我创建的“YouTube”包
  • 我检查了所有允许的实体嵌入显示插件

现在按钮已创建,我需要将其添加到所见即所得:

  • 我转到了配置 > 内容创作 > 文本格式和编辑器
  • 我点击了完整 HTML 旁边的配置按钮
  • 我将新的 Entity Embed 按钮拖到 WYSIWYG 中
  • 我选中了显示嵌入式实体复选框
  • 我确保未检查限制允许的 HTML 标记和正确的错误 HTML

然后我添加了一个新的基本内容页面,单击了新的实体嵌入按钮并搜索/选择了我创建的媒体实体 YouTube 视频。在这一点上,我只能将媒体 ID 嵌入到所见即所得中。没有显示选项来简单地在所见即所得中呈现媒体。

如何在 WYSIWYG 中呈现媒体实体?

【问题讨论】:

    标签: drupal-8


    【解决方案1】:

    对于视频: 当您进入“编辑嵌入按钮”页面时,在“允许的实体嵌入显示插件”下查看并选择“实体浏览器渲染”。然后去结构>媒体包选择你的媒体包。转到“管理显示”选项卡。选择所需的字段。在您的情况下,它可能是“视频 URL”。隐藏其余部分。现在,当它渲染您的视频时,它将按照您的预期渲染视频。

    对于文档: 如果您不处理视频,假设它是一个文档媒体包,您最终将直接链接到媒体实体页面而不是实际文件。解决这个问题的方法并不明显,但很简单。

    当你去管理你的媒体按钮去 /admin/config/content/embed/button/manage/NAMEOFYOURBUTTON 你有很多选择。在“允许的实体嵌入显示插件”下选择“令牌”我不是在开玩笑。 Token 实际上呈现出一个指向文件的链接,而不仅仅是你所期望的一些字符串。

    网站访问者看到这个,它链接到文档而不是媒体实体页面: 文档名称 document_name.pdf(1010.6 KB)

    它在 CKEditor 中呈现这个:

    <drupal-entity data-embed-button="media_document_button" data-entity-embed- display="view_mode:media.token" data-entity-type="media" data-entity- uuid="99e0581c-2403-4a2d-8a62-9f21ff89a6ff"></drupal-entity>

    根据您的主题,它会生成您想要的:

    <a href="link_directly_to_document"><span class="foo">document_name.pdf</span> <span class="bar">(1010.6 KB) </span></a>
    

    【讨论】:

    • 如果选项不存在令牌怎么办?这是 drupal 8.3.7
    • 您可以添加一个新的媒体包来做同样的事情。
    • So what I want to achieve with the second option is , whenever a file is selected to embed on the embed dialog box i have a custom setting file link text which is text field, now upon rendering I want添加指向此文本的链接而不是文件名,如下所示``` {{ file link text }} 。 @heart.cooks.mind 你知道如何实现吗?
    【解决方案2】:

    好的,经过一番挖掘,我的问题似乎是一个已知项目。渲染媒体实体的方法是创建一个视图并使用 Display as: View 选项。这是我为实现这一目标所做的:

    • 创建了一个新视图 - 结构 > 视图 > 添加新视图
    • 查看设置:显示:媒体类型:YouTube(这将是您创建的任何媒体包)
    • 勾选创建区块

    对于视图块,我做了以下操作:

    • 删除了媒体:名称字段
    • 添加的媒体:渲染的实体字段 - 此时我渲染的媒体是 - 显示在预览中

    我需要将媒体限制为一个单一的媒体实体。为此,我:

    • 点击高级
    • 单击上下文过滤器旁边的添加
    • 所选媒体:媒体 ID
    • 在标记为“当过滤器值可用或提供默认值时”的区域中,我检查了“指定验证条件”并选择了“基本验证”

    此时预览仍然显示我的所有媒体实体。但是当我将实体添加到 WYSIWYG 时,由于上下文过滤器,它只呈现单个实体。所以现在我回到了基本页面并点击了 YouTube 视频嵌入按钮。在弹出窗口中,我选择了以下内容:

    • 显示为:视图
    • 视图:我转到我创建的视图并选择了我创建的块
    • 查看参数:检查字段值和实体 ID - 这两个字段都很重要!如果您不单击字段值,则不会显示任何内容。如果您不单击实体 ID,则视图不会获取上下文过滤器的 ID
    • 然后我点击了嵌入按钮并添加了它。

    请注意,您不得将媒体实体/包的显示设置为使用视图。我将视频嵌入字段的显示保持为 Colorbox。需要注意的是,您可以使用 Twig 模板重新格式化显示。它们不会在 WYSIWYG 中正确呈现,但是当它们在您的主题中呈现时会正确呈现。您还可以返回到您创建的嵌入按钮(配置 > 内容创作 > 文本编辑器嵌入按钮)并删除除“允许的实体嵌入显示插件”下的视图之外的所有选项。

    每次将新媒体嵌入 WYSIWYG 时都需要选择相同的视图,这有点笨拙。如果您可以在配置嵌入按钮时设置视图,那就太好了。

    我希望这对遇到类似问题的人有所帮助。我也能够使用这种技术来嵌入图像媒体实体 - 换句话说,它不仅限于视频嵌入领域。

    【讨论】:

    • 谢谢你。它有很大的帮助,您对每次选择查看的笨重问题有任何更新吗?你找到解决办法了吗?
    猜你喜欢
    • 2011-07-18
    • 2012-02-20
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 2011-10-31
    相关资源
    最近更新 更多