允许内容规则(Allowed Content Rules)可以被设置为两种不同的格式:紧凑的字符串格式(string format)和更强大的对象格式(object format)。关于允许内容规则,请阅读允许内容规则。
下面的例子可以使较容易地理解ACF的定制模式。
1. 从完全或标准CKEditor包中打开datafiltering.html例子(基本包提供的功能集太有限了)。
2. 勾选editor 1。它使用默认的配置,所以所有包中可用的按钮、按键或样式都是有效的,并且编辑器的内容也与最初加载的内容一样(除了标准包中的很小细节--因为标准包不包括 Justify(调整版面)插件,页脚没有向右对齐)。
3. 勾选editor 2。CKEDITOR.config.allowedContent选项定义了允许内容规则使用字符串格式。注意到,因为这些规则不允许's'元素,删去(Strike Through)按钮从工具栏中被删除了,并且文本中的删去格式化也被删除了。对于带有水平(Horizontal Line)、下标(Subscript)和上标(Superscript)功能的例子同样如此。
再看一下Styles和Format下拉列表,仅含有允许内容规则中定义的项目。而且,在某些对话框中可用的选项也受到了限制。例如,图象对话窗口仅含有URL、替代文字(Alternative Text)、宽度和高度值,因为仅有这些属性在CKEDITOR.config.allowedContent中定义了。
4. 另外,editor 3 被配置为使用对象格式定义的不同规则集。
内容转换(Content Transformations)
高级内容过滤器不仅可以删除不允许的HTML元素、它们的类、样式和属性,而且可以试着通过将元素从一种形式转换为另一种更喜欢的形式,从而统一输入数据。
考虑加粗(Bold)功能。在HTML代码中,它可以用<strong>、 <b>,或者甚至 <span style="font-weight:700|800|900|bold"> 元素来表示。假设 CKEDITOR.config.allowedContent设置仅含有对<b>的规则。这是否意味着当解析<string>或<span>元素时,会删除它们?
不会。编辑器会将它们都转换为<b>元素。结果是编辑器将只含有<b>元素,并且会保留粘贴内容的可视化形式。如果保留默认的CKEDITOR.config.allowedContent值(在自动模式中),也同样如此--所有加粗的功能形式将被统一成偏爱的<strong>形式。
假设将'img[!src,alt,width,height]'设置(<img>标记带有必需的src和三个可选的属性)添加到允许内容规则中。图像大小应该用属性来设置,因此,作为例子,用样式设置大小的粘贴图像将被转换成具有属性的图像(注意,不是所有情况都可能--只有基于像素的大小可以被转换)。
内容转换功能完全是自动的,不需要配置它。需要做的唯一的事情是设置CKEDITOR.config.allowedContent选项,或使用默认的值(自动模式)