【问题标题】:TYPO3 CKE Editor allow data-attributeTYPO3 CKE 编辑器允许数据属性
【发布时间】:2020-06-26 23:37:56
【问题描述】:

我已经添加了

- { name: "Data Test", element: "p", attributes: { 'data-test': "test" } }

到我的 yaml 配置。我可以在编辑器代码中选择数据属性(并查看它是否正确)。但是在保存内容元素之后,TYPO3 也在从代码中删除 data-test="test"。

我该如何解决这个问题? 感谢帮助! 马丁

纽扣: 关联: rel属性: 启用:真 目标选择器: 禁用:假 特性: 班级: allowedClasses: '按钮,button_hell' 标题: 只读:假 进口: - {资源:“EXT:rte_ckeditor/Configuration/RTE/Processing.yaml”} - {资源:“EXT:rte_ckeditor/Configuration/RTE/Editor/Base.yaml”} - {资源:“EXT:rte_ckeditor/Configuration/RTE/Editor/Plugins.yaml”} 编辑: 配置: # 编辑器的 CSS 定义 contentsCss:“EXT:mw_theme/Resources/Public/Css/rte.css” # 可以是“默认”,但是这里可以定义一个自定义样式集,最适合TYPO3 格式标签:“p;h1;h2;h3;h4;h5;h6;pre;地址” 样式集: # 自定义块级样式 - {名称:“按钮”,元素:“a”,属性:{“类”:“按钮”}} - {名称:“测试”,元素:“p”,属性:{“数据测试”:“测试”}} 工具栏: - ['格式','样式'] - ['粗体','斜体','下划线','块引用','下标','上标'] - ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock','Horizo​​ntalRule'] - ['编号列表','子弹列表'] - ['Link', 'Unlink', 'Anchor', 'Table', 'SpecialChar', 'CodeSnippet', 'Youtube' ] - ['剪切','复制','粘贴','PasteText','PasteFromWord'] - ['撤消','重做','RemoveFormat','ShowBlocks'] - ['来源','最大化','关于'] 删除插件: - 图片 额外插件: - 证明合法 证明类: - 文本左 - 文本中心 - 文本右 - 文本对齐 允许标签 加工: 允许标签: - dl -dt -dd

页面ts:

RTE { default { preset = mw_theme } }`

【问题讨论】:

  • 保存后在后台还能看到属性吗?如果是,请查看 lib.parsefunc_RTE,了解如何为前端清理富文本。请添加您的 T3 版本。
  • TYPO3 9.5。不,数据属性也在后端保存后被删除。在保存到后端之前,我只能在代码中看到数据属性
  • 对不起,我对 CKEditor 配置不是很熟练。请发布您的整个配置,包括相关的 PageTS docs.typo3.org/c/typo3/cms-rte-ckeditor/master/en-us/…,我会看看。我也很好奇如何做到这一点。
  • 抱歉,yaml 太长,无法在评论中发布。我会尝试在几个 cmets 上发布。页面 ts: RTE { default { preset = mw_theme } }
  • zbuttons: link: relAttribute: enabled: true targetSelector: disabled: false properties: class: allowedClasses: 'button, button_hell' title: readOnly: false imports: - { resource: "EXT:rte_ckeditor/Configuration /RTE/Processing.yaml" } - { 资源:"EXT:rte_ckeditor/Configuration/RTE/Editor/Base.yaml" } - { 资源:"EXT:rte_ckeditor/Configuration/RTE/Editor/Plugins.yaml" }跨度>

标签: ckeditor typo3 typo3-9.x


【解决方案1】:

要允许将数据属性从 RTE 字段保存到 db,您需要确保:

1) RTE (CKEditor) 不会剥离属性。这可以使用 extraAllowedContent 进行配置。下面是一个示例,如何在允许数据属性和类的默认规则之外允许 id 属性。

editor:
  config:
    extraAllowedContent:
      - "*(*)[data-*]"
      - "*[id]"

如果您只需要添加数据属性,则不需要上面的配置,并且可以中继默认配置(来自 rte_ckeditor/Configuration/RTE/Editor/Base.yaml),因为那里默认允许数据属性。

要测试这个配置部分,去你的RTE,点击“查看源代码”按钮切换回来再切换,看看属性是不是没了。 如果它仍然存在,则意味着您的 RTE 配置允许它。

2) 那么你需要配置 PHP 方面的东西 - 在数据保存到数据库之前发生的数据转换。见手册章节:https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Rte/Transformations/Process.html#transformations-process

下面是一个示例(取自 RTE yaml 预设),允许在转换中使用 data-abc 属性(除了默认允许的属性)。

processing:
  allowAttributes: [class, id, title, dir, lang, xml:lang, itemscope, itemtype, itemprop, data-abc]

因此,在您的情况下,您在转换部分缺少正确的配置。

【讨论】:

    【解决方案2】:

    这取决于很多因素和很多其他配置,但您似乎是。一种非常常见的方法是将extraAllowedContent 定义为您的 yaml 中的附加配置设置,例如:

    editor:
      config:
        extraAllowedContent: '*(*)[data-*]'
    

    或者如果我对另一行的理解正确,也允许 dt/dd/dl:

    editor:
      config:
        extraAllowedContent:
          - '*(*)[data-*]'
          - dd
          - dl
          - dt
    

    如果是后者,也许EXT:rte_ckeditor_dl 值得一看,以便获得按钮来创建该列表。

    【讨论】:

    • 谢谢!但是 extraAllowedContent: '()[data-*]' 似乎不起作用。此外,这已经在 Base.yaml 中定义。
    【解决方案3】:

    我找到了解决方案:

        extraAllowedContent:
      p[data-test];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 2012-08-26
      • 2013-10-22
      • 2013-09-22
      • 2015-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多