barra azul

cabecera reducida 1 sin fondo

BLOG - Joomla!

Hilo de Ariadna

relacionando contenidos en seblodNo todas las aplicaciones se pueden construir con un único formulario. En las ocasiones en que necesitemos crear dos o más contenidos relacionados estaremos trabajando con más de una tabla que deberán tener una relación entre ellas.

Aplicaciones de este tipo pueden ser, por poner dos ejemplos:

  • Un sistema de comentarios para nuestros artículos. En este caso los comentarios deben estar relacionados con el artículo que se comenta, para que cuando se visualice el artículo veamos en el mismo los comentarios.
  • Una aplicación en la que queremos que los artículos o contenidos pertenezcan a categorias de la aplicación (no las categorías Joomla), y que estas categorías puedan ser creadas y modificadas desde el backend o el frontal sin tener que editar el contenido en SEBLOD para realizar esta tarea. Una cosa es dar permisos de administrador de un contenido y otra muy diferente tener que dar permisos para editar la aplicación en si misma para editar los campos y sus propiedades. Ejemplos pueden ser las categorías que utilicemos en una tienda o escaparate de artículos, o un directorio de Oficinas y personas.

Seguro que antes o después tendrás necesidad de relacionar contenidos, y por ese motivo vamos a tratar sobre como podemos hacerlo.

 

Aviso: Para comprender este artículo y su vídeo se requiere tener cierta base en SEBLOD, que puedes adquirir si aún no tienes en la serie de artículos publicados con anterioridad.

 

¿Por qué un Directorio?...


Mi intención original era escribir, y crear un vídeo, sobre como construir un sistema de comentarios sencillo para nuestros artículos creados con el contenido de tipo "artículo" que nos instala SEBLOD, pero un miembro de nuestra pequeña comunidad hispana de SEBLODERS se dirigió al Foro para consultar como hacer un directorio de Unidades-Personas (siendo las unidades departamentos, pero que podrían ser oficinas o ubicaciones).

Si quieres seguir el hilo puedes hacerlo aquí: https://jorgesistemas.com/foro/seblod/14-listar-categorias-con-seblod

Para poder contestar, aplacé temporalmente el sistema de comentarios y, construí una adaptación del sistema de comentarios que le sirviese de guía para construir y personalizar su aplicación. Para ello utilicé como modelo el ejemplo que proponía (que a la hora de escribir este artículo ha sido modificado, pero que se puede ver en el primer vídeo de los tres que generó la consulta) y de ese modo facilitar la máxima ayuda posible. Se trata de un directorio de "Oficinas-Personal" para una universidad.

Como la primera aproximación estaba basada en el sistema de comentarios (donde por lo general se muestran todos los comentarios en la misma página, sin paginación de la lista de comentarios relacionados) pidió modificaciones que dieron origen a un segundo vídeo y más tarde a un tercero.

En este primer artículo sobre el tema nos centraremos en el primer vídeo, en el que utilizando las mismas técnicas podemos construir un sistema de comentarios o cualquier otra aplicación en la que el contenido relacionado no requiera paginación.

El problema con la paginación es que Joomla no permite dos paginaciones en la misma página, por lo que si queremos paginar el contenido relacionado para limitar el número de articulos relacionados no funcionará. Esto tiene solución, y se puede ver en los videos siguientes, pero es preferible seguir los videos en orden porque de este modo podemos ver las diferentes aproximaciones que podemos utilizar para solucionar el problema que queramos resolver. Además de ser más sencillo de entender así (vamos complicando el asunto de vídeo en vídeo, y por tanto vamos de más sencillo a más complejo), tambíen muestra diferentes aproximaciones de resolución de un problema que te pueden resultar útiles como guía cuando vayas a construir la tuya, permitiéndote elegir cúal es la más adecuada a tu problema.

 

Después de todo este "rollo", vamos a empezar con lo que nos importa.

 

¿Cual es el problema que resuelve este vídeo?...


Queremos construir un directorio de Departamentos y Personal que trabaja en los mismos para una empresa, o un directorio de Autores y Libros, un Sistema de Comentarios, o algo similar.

También queremos que el contenido usado a modo de categorías de la aplicación (Departamentos, Autores, categoría de la aplicación o el contenido a usar como principal) pueda ser creado desde el backend o el frontal sin tener que editar campos de la aplicación (y por tanto necesitar dar permisos para editar los contenidos en las vistas de formularios de SEBLOD desde el backend, con el exceso de privilegios, riesgo y complicación que ello supone) y que la tarea la puedan realizar las personas que designemos como administradores, autores o el grupo que utilicemos para ese fin.

También queremos que se pueda modificar cualquier campo del contenido principal (incluido el título) sin que ello suponga que los contenidos relacionados se queden sin la relación (o la pierdan) a causa de estas modificaciones.

 

¿Y cómo vamos a hacerlo?...


Para ello utilizaremos dos contenidos. El principal que no está relacionado con nada, y el secundario que está relacionado con un artículo concreto del contenido principal.

Se trata de establecer una relación entre dos tablas uno a muchos (cada contenido es una tabla diferente). Esta relación se haría directamente en las tablas si estuviesemos utilizando lenguajes de programación (por ejemplo PHP y jQuery con consultas a la base de datos), pero SEBLOD es un Framework y la relación debemos establecerla en SEBLOD, no en las tablas.

En este vídeo utilizaremos dos contenidos: Oficinas y Personas.

El contenido de Oficinas es el principal, y aunque sólo utilizamos un campo en visualización (el nombre de la oficina) podríamos haber incluido los campos que necesitáramos como la dirección de la oficina, datos de contacto, etc.

El contenido relacionado es el de Personas, que contiene todos los campos propios para el mismo (como nombre, fotografía, cargo, etc).

Para establecer la relación uno a muchos entre ellos vamos a utilizar el ID del contenido de Oficinas como campo de valor único y no modificable (esto preservará la relación ante cualquier cambio en el campo nombre de la oficina, ya que si quisiéramos usar el nombre de la oficina este campo no debería poder ser modificado una vez creado y usado como campo clave).

La relación se establecerá cuando al crear contenidos de Personas grabemos el ID de la oficina en cada formulario de Personas. Dicho más claramente, cuando creemos la ficha de una persona registraremos en un campo a que oficina pertenece.

 

Y como aguantar esta charla hasta aquí, además de tener mérito te hace merecedor de ver el vídeo cuanto antes, vamos a verlo ya:

 

 

El vídeo es interesante, además, porque utilizamos técnicas y campos nuevos que no hemos usado hasta ahora en la serie de tutoriales sobre SEBLOD publicados hasta el momento en este blog y en el canal de Youtube.

 

Esta aplicación está pensada para ser utilizada desde el frontal, ya que es la mejor opción por seguridad, pero si quieres saber cómo hacerlo desde el backend tendrás que ver los tres vídeos en sucesivos artículos. Lo mismo se puede decir para el asunto de usar paginación en la lista de contenido secundario que solucionaremos en el segundo video, y como incluir las listas y búsquedas en el tercero. Finalmente resolveremos el problema de que se pueda manejar de igual forma desde el backend y que se pueda reasignar una persona de una oficina a otra.

No por esto vayas a pensar que la aplicación de este vídeo es incompleta o no totalmente funcional, de hecho es completamente funcional, ya que las modificaciones que repasaremos en siguientes artículos son consecuencia de otras especificaciones solicitadas durante el soporte ofrecido en el Foro.

 

Por el momento, con este vídeo ya deberías ser capaz de construir un sistema de comentarios, donde el contenido principal serían los artículos y el secundario los comentarios.

 

Poco a poco vamos viendo la potencia y alcance de SEBLOD, aunque aún nos queda mucho que aprender. No te lo pierdas...

 

 

 

Escribir un comentario

Sé respetuoso con tod@s. Tenemos derecho a expresar nuestras opiniones y los demás pueden opinar igual o de forma contraria, siempre con el respeto que nos gusta que nos dispensen.
Tu comentario debe estar relaccionado con el tema. Si deseas comentar algo distinto puedes ponerte en contacto con nosotros a través de la opción de "Contactar" del menú principal. Muchas gracias.

Puedes conectarte utilizado tu cuenta en:

       


Si te gusta, puedes compartirlo en:

Compartir en FacebookCompartir en Google PlusCompartir en TwitterCompartir en LinkedIn