在Craft CMS的CKEditor配置中为列表添加自定义类
解决Craft CMS中CKEditor自动为列表添加自定义类的问题
问题分析
你之前的配置无效,是因为CKEditor 5中列表类的配置逻辑和普通元素不同,需要用到ListProperties插件,并且使用正确的defaultProperties配置项,而非旧版的list.options写法。
具体解决方案
1. 启用ListProperties插件
在Craft CMS的CKEditor字段设置中:
- 进入「设置」→「字段」,找到你的CKEditor字段并编辑
- 切换到「编辑器配置」标签页,选择「自定义」配置
- 在「插件」列表里找到ListProperties并勾选启用(这个插件是控制列表属性的核心)
2. 添加自定义配置
在「自定义配置」的文本框中,填入以下JSON配置,设置无序列表和有序列表的默认类:
{ "list": { "defaultProperties": { "bulletedList": { "class": "class-ul" }, "numberedList": { "class": "class-ol" } } } }
这段配置会让编辑器在创建或编辑列表时,自动给<ul>加上class-ul类,给<ol>加上class-ol类。
3. 确保HTML净化允许列表带class属性
Craft默认的HTML净化规则可能会移除列表标签的class,需要调整:
- 打开
config/general.php文件 - 修改
allowableTags配置,确保<ul>和<ol>允许携带class属性:
'allowableTags' => '<p><br><strong><em><ul class><ol class><li>...其他你需要的标签',
如果你不想手动维护标签列表,也可以在CKEditor字段的「HTML净化」选项中选择「允许所有HTML」(注意:这种方式安全性较低,仅适用于信任内容编辑者的场景)。
验证效果
配置完成后,回到编辑器创建一个无序列表,切换到「源代码」视图,就能看到生成的HTML已经自动带上了自定义类:
<ul class="class-ul"> <li>entry 1</li> <li>entry 2</li> <li>entry 3</li> </ul>
内容的提问来源于stack exchange,提问作者Nicj
相关产品推荐
相关产品推荐

