2010-04-13 6 views
6

Ich begann mit django CMS Projekt. Es ist großartig, gebaut mit modularem Design im Auge behalten ... aber was eigentlich unser Kunde will, ist mehr Einfachheit:Standard Inhalt Plugin in Django-cms

Hier in Django CMS kann jede Seite viele Inhalt "Plugins" enthalten - sei es Text, Bild oder andere . Der Kunde möchte jedoch für jede neue Seite ein Text-Plugin aktivieren, selektieren und erstellen lassen - und an diesem Textfeld arbeiten. Es ist etwas einfacher für sie zu verwenden.

Wer hat so etwas schon einmal mit diesem CMS-System gemacht? Oder können Sie andere einfache CMS-Lösungen für django empfehlen?

+0

dies ist keine Antwort könnte jedoch sein hlpful: http://www.django-cms.org/en/documentation/2.0/configuration/#cms-placeholder- Konf – dzida

Antwort

0

Die schnellste, aber wahrscheinlich nicht die eleganteste Art und Weise ist:

  • schreibt ein Skript, das Nutzerverhalten mimicks bei der Auswahl und das Hinzufügen von Text-Plugin von einem Dropdown;
  • überschreiben PageAdmin, um unser Skript einzuschließen.

Es geht so:

# 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

Haben Sie auch das CMS-Modul benötigen?

Die grundlegendste CMS ist fast trivial django out-of-the-box mit:

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

einfach die django Admin verwenden, um loszulegen. Aber wenn Sie mehr wollen, und ihnen nicht den Admin geben, ist es ziemlich einfach, ein Formular/eine Aktion zu knacken, um diese Felder zu bearbeiten.

Wenn Sie wysiwyg Bearbeitung benötigen, fügen Sie tinymce zur Formularvorlage hinzu. Etwas wie:

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

oder (wie die von ‚sayplastic‘ genannt), wenn Sie noch Seiten Bearbeitung werden über durch den Admin können Sie Tiny heften sich an diesem zu

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

Ihr ist auch FeinCMS, die ähnlich sieht Seitenbaum-Editor und einfacher Block standardmäßig. Es ist anpassbarer.

Wenn Sie den Baumeditor nicht benötigen, hat Django eingebaute flatpages, die sehr einfach sind.

2

Es gibt eine einfache Möglichkeit, die gleiche Funktionalität zu erreichen:

eine Reihe von „Prototyp Seiten“ Provide, einem für jede Kombination von Seitenvorlage und instanziiert Plugins, die Sie an den Kunden zur Verfügung stehen sollen.

Lassen Sie den Kunden neue Seiten erstellen, indem Sie die Vorlagenseiten kopieren (über das Kopiersymbol in den Seiten admin), anstatt eine neue Seite von Grund auf neu zu erstellen. Auf diese Weise werden die erforderlichen Plugins bereits vorhanden sein, sogar mit einem Standardinhalt, wenn Sie es wünschen.