Как отключить 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)

Обратите внимание:

  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, текстовая модель импортируется следующим образом: from djangocms_text_ckeditor.models import Text, Спасибо @northben

Другие вопросы по тегам