Как отключить WYMeditor в Django-CMS для использования только простого HTML?
Я хотел бы ввести простой HTML без необходимости какого-либо редактора (Wymeditor или Tinymce). Я знаю, что Django-CMS поставляется с Wymeditor, но моя проблема в том, что копировать и вставлять текст раздражает. Даже если нет формата, Wymeditor любит добавлять стиль к абзацам, когда я просто копирую (без какого-либо формата). Иногда мне даже не нужен еще один абзац внутри заполнителей (и это портит мой стиль).
Есть ли способ избавиться от редактора? Кроме того, есть ли способ избавиться от редактора для определенного заполнителя? Иногда мне это нужно.
ПРИМЕЧАНИЕ: я знаю, что могу создать свой собственный плагин с field.textfield
(и он не использует редактор), но я хотел бы использовать тот же плагин, потому что, если я изменю плагин, мне придется перемещать все тексты вручную в базе данных (производство и разработка).
1 ответ
Я нашел свое решение. По сути, я переопределяю плагин для 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, текстовая модель импортируется следующим образом: from djangocms_text_ckeditor.models import Text
, Спасибо @northben