我找到了我的解決方案。基本上,我重寫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
繼承。這將擺脫惱人的編輯。
我註冊了繼承TextEditor
(from cms.plugins.text.cms_plugins import TextPlugin as TextPluginCMS
)的另一EditorTextPlugin
。我只是重寫插件的名稱。
有了這個,所有存在的文本插件將不使用默認任何編輯器。此外,我仍然能夠使用編輯與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開始,文本模型導入如下:from djangocms_text_ckeditor.models import Text
。謝謝@northben
我真的很希望告訴瀏覽器粘貼到contenteditable應該去掉格式化。每個wysiwyg編輯都必須獨立實現該功能,並且我們都在不同程度上吮吸它。 –