我想介绍普通的HTML,而不需要任何编辑器(wymeditor或tinymce)。我知道Django-CMS附带Wymeditor但我的问题是复制和放大粘贴文字很烦人。即使没有格式,Wymeditor也喜欢在我复制时添加样式(没有任何格式)。有时,我甚至不需要在占位符中使用另一个段落(并且它与我的风格混淆)。
有没有办法摆脱编辑器?此外,有没有办法摆脱特定占位符的编辑器?有时我确实需要它。
注意:我知道我可以使用field.textfield
创建自己的插件(并且它不使用编辑器),但我想使用相同的插件,因为如果我更改插件我会有在数据库中手动移动所有文本(生产和开发)。
答案 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)
注意:
我取消注册原始TextPlugin
(plugin_pool.unregister_plugin(TextPluginCMS)
)并注册一个简单地继承自TextPlugin
的新CMSPluginBase
。这将摆脱讨厌的编辑。
我注册了一个继承自原始EditorTextPlugin
(TextEditor
)的from cms.plugins.text.cms_plugins import TextPlugin as TextPluginCMS
。我只是重写了插件的名称。
有了这个,所有现有的文本插件默认情况下不会使用任何编辑器。此外,我仍然可以使用编辑器和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