在ckeditor中允许oembed标签

Posted

技术标签:

【中文标题】在ckeditor中允许oembed标签【英文标题】:Allow oembed tag in ckeditor 【发布时间】:2018-07-15 07:05:01 【问题描述】:

我想把oembed标签放到TYPO3的ckeditor RTE中。这样,我想将诸如 instagram、facebook 或 twitter 之类的社交帖子放入一些新闻文章中(在一些文本的中间)。

为此,我激活了ckeditor的嵌入插件,并将processing下的oembed标签放在allowedTags中。我还在styles.content.allowTags的常量中定义了oembed标签。

这是我的 yaml:

imports:
    -  resource: "EXT:rte_ckeditor/Configuration/RTE/Processing.yaml" 
    -  resource: "EXT:rte_ckeditor/Configuration/RTE/Editor/Base.yaml" 
    -  resource: "EXT:rte_ckeditor/Configuration/RTE/Editor/Plugins.yaml" 

editor:
    config:
        contentsCss: "EXT:mysitepackage/Resources/Public/Css/rte.css"

        stylesSet:
            -  name: "Lead", element: "p", attributes:  'class': 'lead'  

        toolbarGroups:
            -  name: styles, groups: [ format, styles ] 
            -  name: basicstyles, groups: [ basicstyles ] 
            -  name: paragraph, groups: [ list, indent, blocks, align ] 
            - "/"
            -  name: links, groups: [ links ] 
            -  name: clipboard, groups: [ clipboard, cleanup, undo ] 
            -  name: editing, groups: [ spellchecker ] 
            -  name: insert, groups: [ insert ] 
            -  name: tools, groups: [ table, specialchar ] 
            -  name: document, groups: [ mode ] 

        format_tags: "p;h1;h2;h3;h4;h5;pre"

        justifyClasses:
            - text-left
            - text-center
            - text-right
            - text-justify

        extraPlugins:
            - justify
            - embedsemantic
            - autoembed

        removePlugins:
            - image

        removeButtons:
            - Anchor
            - Underline
            - Strike

        autoEmbedWidget: "embedsemantic"
        embed_provider: "https://my.iframely.instance/oembed?url=url&callback=callback"

        extraAllowedContent: '*(*)[data-*]; oembed'

processing:
    allowTags:
        - oembed

常量中的这一行:

styles.content.allowTags := addToList(oembed)

我现在可以将 oembed 放入 RTE 及其显示的社交帖子预告片中。保存内容后,oembed 标签被替换为p 标签

我错过了什么?

【问题讨论】:

能否提供一个ckeditor中的html源码修改前后的例子? 之前:<oembed>[URL OF POST]</oembed> 之后:<p>[URL OF POST]</p> 如果它不吃 YML 中的处理设置,是否还吃掉 RTE 的常规 TSconfig?喜欢RTE.default.proc.allowTags = oembed 【参考方案1】:

根据我的经验,如果某些内容被替换为其他内容(尤其是 p 标签),则很有可能与 Advanced content filter 有关。

我无法确定您的配置中的错误,但您是否尝试过完全禁用 ACF? (见allowedContent)

allowedContent = true;
(and remove the extraAllowedContent)

如果可行,请不要这样(请参阅security best practices),而是努力寻找正确的设置。

可能在 extraAllowedContent 中显式添加通配符属性:

extraAllowedContent: '*(*)[data-*]; oembed(*)*[*];'

【讨论】:

不幸的是,这没有帮助。也许 TYPO3 CMS 正在过滤掉它。

以上是关于在ckeditor中允许oembed标签的主要内容,如果未能解决你的问题,请参考以下文章

Magento - 如何在 Magento 的 CMS 编辑器中允许某些标签(iframe、嵌入)?

输入标签内的 HTML 名称属性中允许使用哪些字符?

在 html 编辑器中允许锚标记是不是安全?

在 jquery ui 自动完成中允许 null

如何在 JavaScript 文件中允许空格?

在 symfony 访问控制中允许控制器操作