2014-01-08 23 views
5

我想介紹純html而不需要任何編輯器(wymeditor或tinymce)。我知道Django-CMS帶有Wymeditor,但我的問題是複製&粘貼文本很煩人。即使沒有格式,當我簡單地複製(沒有任何格式)時,Wymeditor喜歡爲段落添加樣式。有時,我甚至不需要佔位符內的另一個段落(而且它會混淆我的風格)。如何停用Django-CMS中的WYMeditor以僅使用純HTML?

有沒有辦法擺脫編輯器?此外,是否有辦法擺脫編輯爲特定的佔位符?有時候我確實需要它。

注意:我知道我可以使用field.textfield(並且不使用編輯器)創建自己的插件,但我想使用相同的插件,因爲如果更改插件,我必須將所有插件在數據庫中手動編寫文本(生產和開發)。

+1

我真的很希望告訴瀏覽器粘貼到contenteditable應該去掉格式化。每個wysiwyg編輯都必須獨立實現該功能,並且我們都在不同程度上吮吸它。 –

回答

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. 我註銷原TextPluginplugin_pool.unregister_plugin(TextPluginCMS)),並註冊一個新TextPlugin簡單地從CMSPluginBase繼承。這將擺脫惱人的編輯。

  2. 我註冊了繼承TextEditorfrom cms.plugins.text.cms_plugins import TextPlugin as TextPluginCMS)的另一EditorTextPlugin。我只是重寫插件的名稱。

有了這個,所有存在的文本插件將不使用默認任何編輯器。此外,我仍然能夠使用編輯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

+1

還需要創建「text.html」文件。我只是把'{{instance.body | safe}}'放到我的templates目錄中。 –

+1

從django-cms 3.x開始,文本模型的導入方式如下:'from djangocms_text_ckeditor.models import Text' – northben