Drupal 8:如何使用Entity Embed模块在WYSIWYG中呈现媒体实体?

时间:2017-01-28 16:49:54

标签: drupal-8

问题:如何使用Entity Embed模块在WYSIWYG中呈现媒体实体?

我安装了以下模块:

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

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

我现在想将实体嵌入到Basic页面的WYSIWYG中。要做到这一点我:

  • 去配置>内容创作>文本编辑器嵌入按钮。
  • 点击添加嵌入按钮
  • 在Embed type
  • 下给它贴上标签并选择了Entity
  • 在实体类型下,我选择了媒体
  • 在媒体包下,我选择了我创建的“YouTube”包
  • 我检查了所有Allowed Entity Embed Display插件

现在按钮已创建,我需要将其添加到WYSIWYG:

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

然后,我添加了新的内容基本页面,点击了新的实体嵌入按钮,搜索/选择了我创建的媒体实体YouTube视频。此时我只能将媒体ID嵌入到WYSIWYG中。没有显示选项来简单地在WYSIWYG中渲染媒体。

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

2 个答案:

答案 0 :(得分:1)

视频: 当您进入“编辑嵌入按钮”页面时,请在“允许的实体嵌入显示插件”下选择“实体浏览器渲染”。然后转到Structure> Media Bundles选择您的Media Bundle。转到“管理显示”标签。选择所需的字段。在您的情况下,它可能是“视频URL”。隐藏其余部分。现在,当它呈现您的视频时,它将按预期呈现视频。

对于文档: 如果您不处理视频,让我们说它是一个文档Media Bundle,您将最终直接链接到Media Entity页面而不是实际文件。解决这个问题的方法并不明显,但很简单。

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

网站访问者看到了这一点,它链接到文档而不是媒体实体页面: 文件名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>

答案 1 :(得分:0)

好的,在做了一些挖掘之后,看来我的问题是一个已知的项目。呈现媒体实体的方法是创建视图并使用“显示为:视图”选项。以下是我为实现这一目标所做的工作:

  • 创建了一个新视图 - Structure&gt;意见&gt;添加新视图
  • 查看设置:显示:媒体类型:YouTube(这将是您创建的任何媒体包)
  • 已选中创建一个块

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

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

我需要将媒体限制为一个单一的媒体实体。要做到这一点我:

  • 点击高级
  • 单击“在上下文过滤器旁边添加”
  • 选定媒体:媒体ID
  • 在标有&#34的区域;当过滤器值可用或提供默认值时#34;我检查了&#34;指定验证标准&#34;并选择&#34;基本验证&#34;

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

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

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

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

我希望这有助于任何遇到类似问题的人。我能够使用这种技术嵌入图像媒体实体 - 换句话说,它不仅限于视频嵌入字段。