私は自分の解決策を見つけました。基本的に、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 の時点で、 Text モデルは次のようにインポートされますfrom djangocms_text_ckeditor.models import Text
。ありがとう@ノースベン