2010-04-13 26 views
6

Comencé a usar el proyecto django CMS. Es genial, construido teniendo en cuenta el diseño modular ... pero lo que nuestro cliente realmente quiere es más simplicidad:Complemento de contenido predeterminado en django-cms

Aquí, en django CMS, cada página puede contener muchos 'complementos' de contenido, ya sea texto, imagen u otro . Pero el cliente desea tener un complemento de texto activo, seleccionado y creado automáticamente para cada página nueva, y trabajar en ese campo de texto. Es algo que es más simple de usar.

¿Alguien ha hecho algo así antes con este sistema CMS? O bien, ¿alguna otra solución CMS simple para django que pueda recomendar?

+0

esto no es una respuesta sin embargo podría ser hlpful: http://www.django-cms.org/en/documentation/2.0/configuration/#cms-placeholder- conf – dzida

Respuesta

0

El más rápido, pero probablemente no es la forma más elegante es:

  • escribir un script que imita el comportamiento del usuario en la selección y la adición de plug-in de texto desde un menú desplegable;
  • reemplazan PageAdmin para incluir nuestro script.

Dice así:

# 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

¿Por lo menos necesita el módulo CMS?

El más básico de la CMS es de casi trivial usando Django fuera de la caja:

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

sólo tiene que utilizar la administración de Django para empezar. Pero si quieres más, y no les das el administrador, es muy fácil eliminar un formulario/acción para editar estos campos.

Si necesita editar wysiwyg agregue tinymce a la plantilla de formulario. Algo así como:

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

o (como se ha mencionado por 'sayplastic') si todavía está editando páginas a través a través del administrador puede adjuntar Tiny a eso también

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

Su es también FeinCMS que proporciona similares editor de árbol de páginas y bloque más simple por defecto. Es más personalizable.

Si no necesita el editor de árbol, Django tiene incorporado flatpages que son muy simples.

2

Hay una manera simple de conseguir la misma funcionalidad:

proporcionar una serie de prototipos de "páginas", una para cada combinación de plantilla de página y los plugins instanciados desea que estén disponibles para el cliente.

Haga que el cliente cree páginas nuevas copiando las páginas de la plantilla (puede hacerse mediante el ícono de copiar en el administrador de las páginas) en lugar de crear una página nueva desde cero. De esta manera, los complementos necesarios ya estarán allí, incluso con un contenido predeterminado si lo desea.

Cuestiones relacionadas