You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal9中CKEditor5自定义标签被替换为data-ck-unsafe-element问题求助

解决CKEditor5自定义<bbref>标签被标记为unsafe的问题

针对你遇到的自定义<bbref>标签加载时被替换为<span data-ck-unsafe-element="bbref">的问题,核心原因是CKEditor5默认仅识别白名单内的元素,自定义元素需要在Schema中注册并配置正确的上下转换规则,同时配合Drupal的HTML过滤设置,具体步骤如下:

1. 在CKEditor5插件中注册模型Schema

CKEditor5的Schema是编辑器识别合法元素/属性的核心,必须显式注册<bbref>:

init(editor) {
  // 注册<bbref>为行内文本元素,继承文本的所有特性
  editor.model.schema.register('bbref', {
    inheritAllFrom: '$text',
    allowAttributes: ['ver'], // 允许ver属性
  });
}

2. 配置Upcast(HTML→模型)转换规则

让编辑器能把保存的<bbref>HTML转换为模型中的对应元素:

editor.conversion.for('upcast').elementToElement({
  model: 'bbref',
  view: {
    name: 'bbref',
    attributes: {
      ver: true, // 匹配并保留ver属性
    },
  },
});

3. 修正Downcast(模型→HTML)转换规则

你之前使用createAttributeElement()是针对属性的转换,而<bbref>是独立元素,需改用元素转换:

editor.conversion.for('downcast').elementToElement({
  model: 'bbref',
  view: (modelElement, { writer }) => {
    const verAttr = modelElement.getAttribute('ver');
    return writer.createContainerElement('bbref', { ver: verAttr });
  },
});

4. 配置Drupal的HTML过滤规则

Drupal的文本格式过滤会影响保存/加载的HTML,需在对应文本格式(如Full HTML)的设置中:

  • 进入配置>内容创作>文本格式和编辑器,选择你的编辑器配置
  • 在“HTML过滤器”的“允许的HTML标签”中添加:<bbref ver>
  • 确保CKEditor5的“限制HTML”功能没有屏蔽<bbref>

5. 额外排查点

  • 检查Drupal CKEditor5模块是否有版本更新,部分版本可能对自定义元素的处理有调整
  • 确认没有其他过滤模块(如Filter模块的额外规则)自动移除<bbref>标签

内容的提问来源于stack exchange,提问作者jons

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 12:30:44