配置 CKEDITOR 不为某个自定义标签修复 HTML

Configure CKEDITOR not to fix HTML for a certain custom tag

我在使用自定义标签的模板系统中使用 CKEditor,然后我的 PHP 后端将用数据替换 HTML 中找到的自定义标签。

例如,在教程中,我可能有一套关于如何做某事的标准说明,但某些示例需要额外的说明。在这种情况下,我会将 <%Extra_Instructions%> 自定义标记插入 html,然后 php 后端会将其替换为该页面的说明。

所以在列表中,我会做类似的事情:

<ol>
 <li>Step 1</li>
 <li>Step 1</li>
 <li>Step 1</li>
 <%Extra_Instructions%>
 <li>You are all done!</li>
</ol>

问题是 CKeditor 检测到自定义标签不正确 html 并自动将其移出列表。所以来源将变成:

<%Extra_Instructions%>
<ol>
 <li>Step 1</li>
 <li>Step 1</li>
 <li>Step 1</li>
 <%Extra_Instructions%>
 <li>You are all done!</li>
</ol>

有没有办法配置 Ckeditor 不对某些标签执行此操作?

如果你想把这些标签放在<ul>里面这样的地方,那么这里唯一的解决办法就是使用config.protectedSource。匹配的数据片段将在编辑期间转换为 HTML 评论。这当然会使它们对用户不可见,但它允许将它们保存在其他元素无法定位的地方。例如。在 <ul> 中,您只能有 <li>,因此您的自定义标签只能由注释或 <li> 替换。受保护的源为您提供前者,而后者是一个复杂得多的选项,因为您想对这些标签的可编辑性进行一些限制。

config.protectedSource 的用法示例:

config.protectedSource.push( /<%[\s\S]*?%>/g );