5

エディター (wymeditor または tinymce) を必要としないプレーンな html を紹介したいと思います。Django-CMS には Wymeditor が付属していることは知っていますが、私の問題はテキストのコピーと貼り付けが煩わしいことです。書式がなくても、(書式なしで) コピーするだけで、Wymeditor は段落にスタイルを追加するのが好きです。場合によっては、プレースホルダー内に別の段落さえ必要ないこともあります (そして、それは私のスタイルを台無しにします)。

エディタを削除する方法はありますか? さらに、特定のプレースホルダーのエディターを取り除く方法はありますか? 時々私はそれを必要とします。

注: を使用して独自のプラグインを作成できることはわかっていますが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)する新しいものを登録します。それは迷惑なエディターを取り除きます。TextPluginCMSPluginBase

  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。ありがとう@ノースベン

于 2014-01-20T02:48:00.740 に答える