我找到了我的解决方案。基本上,我覆盖了 TextPlugin 的插件。我将此添加到我的cms_plugins.py
:
from cms.plugin_base import CMSPluginBase
from cms.plugin_pool import plugin_pool
from cms.plugins.text.models import Text
from cms.plugins.text.cms_plugins import TextPlugin as TextPluginCMS
class TextPlugin(CMSPluginBase):
model = Text
name = _("Text Plugin")
render_template = "text.html"
plugin_pool.unregister_plugin(TextPluginCMS)
plugin_pool.register_plugin(TextPlugin)
class EditorTextPlugin(TextPluginCMS):
name = _("Editor Text Plugin")
plugin_pool.register_plugin(EditorTextPlugin)
注意:
我取消注册原来的TextPlugin
( plugin_pool.unregister_plugin(TextPluginCMS)
) 并注册一个TextPlugin
简单地继承自CMSPluginBase
. 这将摆脱烦人的编辑器。
我注册了另一个EditorTextPlugin
从原始TextEditor
( from cms.plugins.text.cms_plugins import TextPlugin as TextPluginCMS
) 继承的。我只是重写了插件的名称。
有了这个,所有现有的文本插件默认不会使用任何编辑器。此外,我仍然可以将编辑器与EditorTextPlugin
.
CMS_PLACEHOLDER_CONF
最后,我可以在 settings.py中控制哪些插件使用编辑器:
CMS_PLACEHOLDER_CONF = {
'my_placeholder': {
'plugins': { 'TextPlugin', 'EditorTextPlugin'}
},
}
不需要无聊的迁移。当我想使用编辑器时,我只需添加一个新的EditorTextPlugin
并复制并粘贴内容。
编辑
正如@Melissa 在评论中指出的那样。您确实需要将模板添加text.html
到{{instance.body|safe}}
模板目录中。
从 django-cms 3.x 开始, Text 模型的导入方式如下:from djangocms_text_ckeditor.models import Text
. 谢谢@northben