CKEditor:在DjangoCMS中配置允许的内容

2 投票
2 回答
719 浏览
提问于 2025-04-29 05:29

我在配置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解析器,以满足你的需求。我还没有尝试过这个,所以如果你试过了,请告诉我是否有帮助。

撰写回答