2010-04-13 45 views
6

我開始使用django CMS項目。這很棒,用模塊化設計牢記在心......但實際上我們的客戶想要的是更簡單:django-cms中的默認內容插件

在這裏,在django CMS中,每個頁面可以包含許多內容'插件' - 無論是文本,圖像還是其他。但客戶希望有一個文本插件處於活動狀態,爲每個新頁面自動選擇和創建 - 並在該文本字段上工作。這對他們來說簡單些。

任何人在使用這個CMS系統之前都做過類似的事情嗎?或者,您可以推薦任何其他簡單的django CMS解決方案?

+0

這不是一個答案卻可能是hlpful:http://www.django-cms.org/en/documentation/2.0/configuration/#cms-placeholder- CONF – dzida 2010-08-27 13:24:12

回答

0

最快的,但可能不是最優雅的方式是:

  • 寫選擇並從下拉添加文本插件時模擬了用戶行爲的腳本;
  • 重寫PageAdmin以包含我們的腳本。

它是這樣的:

# anywhere in your project, for example, site/admin.py 
from cms.models import Page 
from cms.admin.pageadmin import PageAdmin 

class ModPageAdmin(PageAdmin): 
    class Media: 
     js = ('js/cms.page.js',) 

admin.site.unregister(Page) 
admin.site.register(Page, ModPageAdmin) 

# in MEDIA_URL/js/cms.page.js 
$(document).ready(function(){ 
    ph = $("div.form-row.main") // replace "main" with your placeholder name, lower-case 
    $("select", ph).val('TextPlugin') 
    window.setTimeout(function(){ $("span.add-plugin", ph).click() }, 500) 
}) 
1

你甚至不需要CMS模塊?

最基本的CMS的是幾乎微不足道的使用超出現成的Django:

class ContentPage(models.Model): 
    title = models.CharField(max_length=100) 
    content = models.TextField() 
    slug = models.SlugField() 

def view_page(request, slug='home'): 
    return render_to_response('content.html', 
     { 'page': ContentPage.objects.get(slug=slug) }, 
     context_instance=RequestContext(request) 
    ) 

只需使用Django管理上手。但是,如果你想要更多,而不是給他們管理員,很容易敲一個窗體/動作來編輯這些字段。

如果您需要wysiwyg編輯,添加tinymce到表單模板。喜歡的東西:

<script type="text/javascript" src="{{MEDIA_URL}}tiny_mce/tiny_mce.js"></script> 
<script type="text/javascript"> 
tinyMCE.init({... 

,或者如果你還在通過管理編輯通過網頁就可以把拇指姑娘太

class Media: 
    js = (
     settings.MEDIA_URL + "jquery/jquery.js", 
     settings.MEDIA_URL + "tiny_mce/tiny_mce.js", 
     settings.MEDIA_URL + "js/admin.js" 
    ) 
1

(如「sayplastic」提到的)他們也是FeinCMS提供類似頁面樹編輯器和默認情況下更簡單的塊。它更具可定製性。

如果你不需要樹編輯器,Django已經內置了flatpages這很簡單。

2

有一個簡單的方法來實現相同的功能:

提供了大量的「原型頁」,一個頁面模板,你想提供給客戶實例化插件的每個組合。

讓客戶通過複製模板頁面(可以通過頁面管理中的複製圖標完成)來創建新頁面,而不是從頭開始創建新頁面。通過這種方式,所需的插件將已經存在,即使有默認內容也是如此。