Plone es un excelente sistema de gestión de contenidos. Recientemente ha sido elegido como el mejor CMS no-PHP en un popular concurso anual. A pesar de esto, muchos desarrolladores web de Python encuentran complejo a Zope, el framework con el que esta desarrollado el CMS.
Ahora, ¿qué tal si pudieras usar Plone solo como un gestor de contenidos y tu framework favorito, cualquiera sea, para implementar un front-end de forma transparente, obteniendo una configuración basada sobre una aplicación probada y de bajo mantenimiento, como backend siendo libre para escribir tu propia aplicación, usando el poder y flexibilidad de tu framework web?
En esta charla, se mostrarán ejemplos realizados con un par de productos de terceros de Plone y front-ends en varios frameworks.
8. Plone tiene muchas prestaciones
● Fácil de usar e instalar
● Cumple con estandares, incluyendo
accesibilidad
● Mejor registro de seguridad entre los CMSs
mas populares
● Disponible en mas de 40 lenguajes
● Motor de workflow y reglas
● Versionado: historial y revertir cambios
● y por supuesto...
14. Plone NO es un framework web de
propósito general
● Aunque a veces ovidamos eso...
● Nuestros clientes no piden funcionalidades:
“queremos Plone, solo necesitamos sacar tal
funcionalidad y agregar otras tantas”
● O simplemente creemos que no tenemos otra
opción.
● y al final nos queda...
18. Content Mirror serializa el
contenido de Plone en una bdd
relacional
● Todos los tipos de contenidos que vienen out of the
box en Plone y los campos archetypes.
● Tipos de contenidos archetypes, agregados en
productos de terceros.
● Mantiene jerarquía de contenido.
● Mirroring completamente automatizado, no requiere
configuración mas allá de la instalación.
● Soporte para Plone 2.5, 3.0, 3.1, 3.2 y 3.3.
20. Ahora podemos:
● Usar Plone solo para administrar contenido
● Usar cualquier framework para trabajar con el
contenido.
● Quitar Plone del deployment
● Dejar de pensar como hacer algo en términos
de plone y comenzar a pensar qué queremos
realizar.
● Simplificar, simplificar
21.
..y podemos servir contenido Plone rápido!
22. Cómo funciona ?
● Se integra dentro del manejador de eventos de
Plone y subscribe eventos al ciclo de vida de
contenido (object added, edited, deleted).
● Transforma schemas de contenido Plone en
tablas relacionales usando SQLAlchemy
● Para todos los objetos se genera un schema,
incluyendo archivos y relaciones.
● Se genera una tabla para cada tipo de
contenido Plone.
26. Configurar los tipos de contenidos
propios
Por cada tipo de contenido del sitio:
<ore:mirror content=
"Products.ATContentTypes.content.document.ATDocument" />
29. Los cambios se envían de forma
síncrona a la bdd
plone# select content_id, id, title from content where id = 'frontpage';
content_id | id | title
++
8 | frontpage | Content Mirror sent this
(1 row)
30. Qué tipos de sitios ?
● Pocos gestores de contenidos, muchos
usuarios
● Sitios freezados
● Sitios con separación clara contenido y
presentación:
– Revistas
– Períodicos
– Gobierno
– ONG
35. Content Mirror es fácil de extender
● Por ejemplo
– Reportes a partir del contenido
– Auditar cambios
– Exportar a formatos como JSON
– Otros medios de persistencia
● Content mirror Usa la Arquitectura de
Componentes de Zope
● Otra cosa que sea bdd relacional
37. Front end para Google App Engine
● Aprovechar la infraestructura de Google
● Usar su autenticación
● Dejar que ellos solucionen la escalabilidad
● Casi un juguete, pero muestra que se puede
hacer con ContentMirror y Plone
48. Muchas gracias!
Roberto Allende
Sobre un trabajo de Carlos de la Guardia
rallende@menttes.com
http://twitter.com/robertoallende
http://robertoallende.com