CKEditor:在DjangoCMS中配置允许的内容
我在配置CKeditor的时候遇到了一些问题。我想在CKeditor中实现“允许所有内容,除了...”的设置,按照文档的说明,我需要在配置里写:
config.allowedContent = {
$1: {
// Use the ability to specify elements as an object.
elements: CKEDITOR.dtd,
attributes: true,
styles: true,
classes: true
}
};
config.disallowedContent = 'script; *[on*]';
但是因为CKeditor的配置是用Python写的,我不能直接写CKEDITOR.dtd
。那么,有没有什么解决办法呢?
2 个回答
0
我在尝试给锚链接添加样式属性,比如说 style="background-image: url('static/img/slide-1.jpg');"
。可是每次保存的时候,编辑器都会把这个样式属性清空。
CKEDITOR_SETTINGS = {
...,
'basicEntities': False,
'entities': False,
...
}
我试过下面的设置。
但是,这些设置都没有用。
最后,我只好完全关闭这个功能,把 TEXT_HTML_SANITIZE = False
设置成了假。
这样就成功了。
0
在很多情况下,只需要在你的 settings.py
文件中添加一些额外允许的标签或属性就可以了:
TEXT_ADDITIONAL_TAGS = ('iframe',)
TEXT_ADDITIONAL_ATTRIBUTES = ('scrolling', 'allowfullscreen', 'frameborder')
当然,你需要根据自己的需求进行调整。
如果你真的想实现那种“允许所有但...”的逻辑,你就得为Django CMS编写自己的解析器,用来清理HTML。这意味着在前端编辑器中,你可能需要关闭所有的清理选项,使用以下选项:
CKEDITOR_SETTINGS = {
...,
'basicEntities': False,
'entities': False,
...
}
在后台方面,文档提到你可以编写自己的Python解析器,以满足你的需求。我还没有尝试过这个,所以如果你试过了,请告诉我是否有帮助。