如何在Django-CMS中停用WYMeditor只使用纯HTML?

时间:2014-01-08 01:12:29

标签: django django-cms wymeditor

我想介绍普通的HTML,而不需要任何编辑器(wymeditor或tinymce)。我知道Django-CMS附带Wymeditor但我的问题是复制和放大粘贴文字很烦人。即使没有格式,Wymeditor也喜欢在我复制时添加样式(没有任何格式)。有时,我甚至不需要在占位符中使用另一个段落(并且它与我的风格混淆)。

有没有办法摆脱编辑器?此外,有没有办法摆脱特定占位符的编辑器?有时我确实需要它。

注意:我知道我可以使用field.textfield创建自己的插件(并且它不使用编辑器),但我想使用相同的插件,因为如果我更改插件我会有在数据库中手动移动所有文本(生产和开发)。

1 个答案:

答案 0 :(得分:6)

我找到了解决方案。基本上,我重写了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)

注意:

  1. 我取消注册原始TextPluginplugin_pool.unregister_plugin(TextPluginCMS))并注册一个简单地继承自TextPlugin的新CMSPluginBase。这将摆脱讨厌的编辑。

  2. 我注册了一个继承自原始EditorTextPluginTextEditor)的from cms.plugins.text.cms_plugins import TextPlugin as TextPluginCMS。我只是重写了插件的名称。

  3. 有了这个,所有现有的文本插件默认情况下不会使用任何编辑器。此外,我仍然可以使用编辑器EditorTextPlugin

    最后,我可以使用settings.py中的CMS_PLACEHOLDER_CONF控制哪些插件使用编辑器:

    CMS_PLACEHOLDER_CONF = {
        'my_placeholder': {
            'plugins': { 'TextPlugin', 'EditorTextPlugin'}
        },
    }
    

    不需要无聊的迁移。当我想使用编辑器时,我只需添加一个新的EditorTextPlugin并复制并粘贴内容。


    <强> EDITS

    @Melissa在评论中指出。您需要将模板text.html{{instance.body|safe}}一起添加到模板目录中。

    从django-cms 3.x 开始,Text模型的导入方式如下:from djangocms_text_ckeditor.models import Text。谢谢@northben