配置 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 );
我在使用自定义标签的模板系统中使用 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 );