Contenido

Concepto

El corazón de cada CMS está en el contenido, una abstracción que los editores pueden manipular y que más tarde será presentado a los usuarios de la página. La estructura del contenido depende mucho de las necesidades del proyecto, y este debe tener un significativo impacto en el futuro uso y desarrollo de la plataforma.

La EE del CMF de Symfony viene con el ContentBundle: una implementación básica de una estructura de contenido, incluyendo el soporte para múltiples idiomas y el almacenamiento de Rutas en la base de datos.

Contenido estático

El StaticContent declara la estructura básica del contenido. Su estructura es muy similar a las utilizadas en los sistemas ORM de Symfony2, y la mayoría de sus campos son autoexplicativos, ya que son lo que esperarías de un CMS básico: título, cuerpo, información de publicación y una referencia al padre, para organizar un árbol jerárquico. Este también incluye un bloque de referencia (más sobre esto más adelante).

Las dos interfaces implementadas revelan dos de las características incluidas en esta implementación:

  • RouteAwareInterface significa que el contenido tiene Rutas asociadas.
  • PublishWorkflowInterface significa que el contenido tiene fechas de publicación y despublicación, las cuales serán manejadas por el núcleo del CMF de Symfony para determinar el acceso.

Contenido multilingüe estático

The MultilangStaticContent extends StaticContent, offering the same functionality with multi language support. Este especifica qué campos son traducidos (title, body y tags) así como una variable para declarar la región.

También especifica la estrategia de traducción:

  • Annotations
    /**
     * @PHPCRODM\Document(translator="child", referenceable=true)
     */
    

Para información sobre las estrategias de traducción disponibles, consulta la página de Doctrine relacionada con el Soporte multilingüe en el PHPCR-ODM

Controlador de contenido

Para manejar ambos tipos de contenido, también incluye un Controlador. Its inner workings are pretty straightforward: acepta una instancia de contenido y opcionalmente una plantilla a dibujar. If none is provided, it uses a pre-configured default. It also takes into account the document’s publishing status and multi language. Ambas instancias de contenido y la plantilla opcional son proporcionadas al Controlador por el DynamicRouter del RoutingExtraBundle. More information on this is available on the Routing system getting started page page.

Admin Support

El último componente necesario para manejar los tipos de contenido incluidos es una interfaz de administración. Symfony CMF can optionally support SonataDoctrinePHPCRAdminBundle , a back office generation tool. Para más información sobre esta, por favor consulta la sección de documentación del paquete.

En ContentBundle, las nterfaces de administración requeridas ya están declaradas en el directorio Admin y configuradas en el archivo Resources/config/admin.xml, y serán cargadas automáticamente si instalas el SonataDoctrinePHPCRAdminBundle (ve Creando un CMS con CMF y Sonata para instrucciones sobre esto).

Configurando

El paquete también apoya un conjunto opcional de parámetros de configuración. Consulta ContentBundle para la referencia de configuración completa.

Consideraciones finales

Si bien este pequeño paquete incluye algunos componentes vitales para un CMS completamente operativo, a menudo no proporciona todo lo que necesitas. The main idea behind it is to provide developers with a small and easy to understand starting point you can extend or use as inspiration to develop your own content types, Controllers and Admin panels.

Bifúrcame en GitHub