5

我想介绍纯 html 而不需要任何编辑器(wymeditor 或 tinymce)。我知道 Django-CMS 带有 Wymeditor,但我的问题是复制和粘贴文本很烦人。即使没有格式,Wymeditor 喜欢在我简单复制时为段落添加样式(没有任何格式)。有时,我什至不需要占位符中的另一个段落(这与我的风格相混淆)。

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

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

4

1 回答 1

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. 我取消注册原来的TextPlugin( plugin_pool.unregister_plugin(TextPluginCMS)) 并注册一个TextPlugin简单地继承自CMSPluginBase. 这将摆脱烦人的编辑器。

  2. 我注册了另一个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

于 2014-01-20T02:48:00.740 回答