Crear tipos de contenidos «nested» en OpenCMS

Cuando creamos un contenido en OpenCMS podemos crear tipos de contenido que incluyan otros contenidos dentro, de forma que podamos «nestear» y asi poder tener tipos de contenidos que podemos usar en más de un tipo (o escalar) de forma sencilla.

Imaginemos (como ejemplo) que queremos crear un tipo de contenido llamado «pagina generica» el cual sera un contenido que tenga un titulo, subtitulo, párrafos de texto, imagenes, enlaces y adjuntos (ficheros). Pero que cada párrafo puede contener a su vez más imagenes, adjuntos… e incluso que los enlaces tengan descripciones (ademas del enlace en si, tanto externo como interno). Si hicieramos un unico contenido seria «grande» y podria ser poco usable, cuando lo importante es tener un contenido que «contenga» el resto.

Así, podemos crear un contenido llamado PaginaTexto que contenga contenidos Parrafo, Imagenes y Enlaces.


El contenido contenedor llamado PaginaTexto, podría ser así:

[code]



























Titulo de la página
Texto generico de la página


















[/code]

Donde, si vemos, nuestro contenido esta creado en un modulo llamado com.contenidos.uva.es, aunque eso no sea lo importante.

Si nos fijamos, lo importante son los includes donde tenemos 3 tipos que incluimos: enlaces.xsd, parrafos.xsd y enlaces.xsd que como vemos estan dentro de un directorio llamado nested dentro de los schemas.

Ademas, si nos fijamos en la definición del contenido OpenCmsPaginaTexto cuando definimos un elemento (por ejemplo Parrafo) el tipo de elemento es justamente el tipo de los otros esquemas incluidos.

Así, nested/imagenes.xsd sera:
[code]



















Enlace externo referencia de la imagen
Descripcion de la imagen (texto corto)
Imágen asociada


















[/code]

Tambien, nested/parrafos.xsd sera:
[code]






















Texto de la subseccion
Enlaces de la subsección
Documento añadido


















[/code]

Y nested/enlaces.xsd será:
[code]


















Descripción del enlace
Enlace

















[/code]

Donde, lo más curioso es que los subesquemas incluyen otros esquemas a su vez en su propia definición de datos. Con lo que podemos hacerlo tan complejo como queramos.

Destacar que los esquemas «nesteados» han de llevar obligatoriamente en la definición del lenguaje:
[code]

[/code]

Es decir, en modo opcional y no requerido ya que solo un elemento ha de llevarlo en requerido.

El resultado será el siguiente:

tuti

Técnico en Comunicación Interna de la UVa

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.