2010-04-13 17 views
6

django CMS projesini kullanmaya başladım. Akılda tutulan modüler tasarıma sahip harika bir şey ... ama aslında müşteri isteğimiz daha basit:Varsayılan içerik eklentisi django-cms

Burada, django CMS'de her sayfa birçok içerik 'eklentisi' içerebilir - metin, resim veya diğer . Ancak müşteri, her yeni sayfa için otomatik olarak bir metin eklentisinin aktif, seçilmiş ve oluşturulmuş olmasını ister ve bu metin alanında çalışır. Kullanmaları için daha basit olan bir şey.

Bu CMS sistemi ile daha önce böyle bir şey yapan var mı? Ya da django için başka basit CMS çözümleri önerebiliriz?

+0

bu bir cevap ancak hlpful olabilir değil: http://www.django-cms.org/en/documentation/2.0/configuration/#cms-placeholder- conf – dzida

cevap

0

en hızlı, ama muhtemelen en zarif yoludur:

  • seçip bir açılır menüden metin eklentisi eklerken kullanıcı davranışını taklit bir senaryo yazmak; Komutumuzu dahil etmek için PageAdmin'i geçersiz kılmak üzere
  • .

Böyle giderse:

# 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

hatta CMS modülü gerekir mi?

CMS en en temel dışı-box Django kullanarak neredeyse önemsiz:

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) 
    ) 

Başlamak için django yöneticisi kullanın. Ancak daha fazlasını istiyorsanız ve onlara yönetici vermediyseniz, bu alanları düzenlemek için bir form/eylemi nakavt etmek oldukça kolaydır.

Wysiwyg düzenlemesine ihtiyacınız varsa, form şablonuna tinymce ekleyin. Bir şey gibi: Hâlâ yönetici aracılığıyla üzerinden sayfaları düzenlerken eğer o da

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

için Minik ekleyebilir ('sayplastic' tarafından belirtildiği gibi)

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

ya da benzer sağlar FeinCMS Onların ise sayfa ağacı düzenleyicisi ve varsayılan olarak daha basit blok. Daha özelleştirilebilir.

Ağaç düzenleyicisine ihtiyacınız yoksa, Django çok basit olan flatpages ürününe sahiptir.

"prototip sayfalar", sayfa şablonuna ve müşteriye kullanılabilir olmasını istediğiniz örneği eklentileri her bir kombinasyon için birinin sayısı sağlayın:

2

aynı işlevselliği elde etmek için basit bir yolu var.

Müşteri, sıfırdan yeni bir sayfa oluşturmak yerine şablon sayfalarını kopyalayarak (sayfa yöneticisindeki kopyalama simgesinden yapılabilir) yeni sayfalar oluşturun. Bu şekilde, gerekli eklentiler zaten var, hatta varsayılan içeriğiniz olsa bile.