¿Qué es un sibling o hermano en OpenCms?

Mon Apr 13 20:33:00 CEST 2009       Sergio Raposo Vargas       OpenCms, Programación

Seguramente muchos de vosotros os habréis encontrado muchas veces con la palabra "sibling" en OpenCms, que podríamos interpretarla como "hermano". Hay muchos que piensan que esta traducción es demasiado literal, pero a mi me gusta la traducción ya que se asemeja mucho a lo que realmente es. 

Bueno, al grano, vamos a describir que es un sibling:

¿qué es un sibling?

Es un puntero o acceso directo a un contenido desde otro recurso. Intento explicarlo mejor. Cuando nosotros creamos un sibling de un recurso realmente lo que estamos creando es un recurso en otro lugar del vfs de OpenCms pero que comparte el contenido con el original.

¿Qué implica que compartan el contenido?

La principal implicación es que cuando nosotros modifiquemos uno de ellos, el otro hermano se verá también afectado, es decir, estaremos modificando los dos recursos al mismo tiempo.

¿Cómo podemos crear un sibling?

Cuando usemos la herramienta de copiar del menú contextual d OpenCms dispondremos de 3 opciones de copiado. Una de ellas es la que creará un sibling o hermano del contenido.

¿Cuantos sibling podemos crear de un contenido?

Realmente tantos como queramos, es decir, no existe un límite real de recursos hermanos.

¿Las propiedades también se comparten?

No, las propiedades son específicas del recurso, no del contenido, por lo tanto, podremos tener, por ejemplo, dos recursos iguales cada uno de ellos con una plantilla distinta (propiedad template o template-elements).

¿Podemos crear sibling de todos los recursos?

Si, de todos, aunque realmente solo tiene sentido de aquellos que tienen un contenido,  para el caso de las carpetas (folders) no tiene sentido ya que no tienen realmente un contenido.

Realmente ¿cúal de los dos contenidos tiene el contenido real?

La respuesta real sería, ninguno de los dos. En el modelo de datos de OpenCms se distingue entre dos(2) cosas, el contenido y el recurso. El recurso es todo aquel elemento del vfs. Un recurso estará formado por propiedades, una ruta, un nombre de recurso, .... Por otro lado, OpenCms guarda en otra tabla el contenido real. De esta forma 2 hermanos serán dos recursos que tienen distinto path (ruta), distintas propiedades, pero que apuntan al mismo contenido. Por lo tanto, ¿cuál de los dos es el principal? pues ninguno, ambos tienen el mismo nivel, es decir, no por un recurso ser el inicial tiene más privilegios o poderes sobre el contenido que el recien creado. El que quiera conocer un poco más sobre esto le invito a que observe el modelo de datos y vea como está estructurado.

¿Para qué podemos necesitar crear un sibling?

Voy a intentar poneros varios casos prácticos en los que es útil usar sibling:

  • Tenemos una sección de descarga en el que los recursos de tipo descarga (xmlcontent) están ordenados en carpetas que indican la categoría de la misma. Imaginaros que una descarga pertenece a dos categorías, para evitar que, si es necesario modificar el recurso una vez copiado, tengamos que tocar en ambos sitios, crearemos un hermano de forma que al modificar uno estemos modificando el otro.
  • Web multi-idioma. Cuando estamos editando webs con más de un idioma, es muy sencillo editar un recurso, cambiar de idioma, y editar el contenido en el nuevo idioma. Pero, si estamos utilizando doble sistema de carpetas (una para cada idioma), tendremos que duplicar el contenido y escribir el idioma que corresponda en cada caso. Para evitar esto, podremos crear un sibling del contenido inicial de uno de los idiomas al otro, de forma que podamos editar los dos idiomas sin necesidad de salir del editor y buscarlo en el otro idioma.

 

 

 OpenCms sibling hermano