The Joomla! Community Magazine™

Usando SobiPro como CCK

Escrito por | Tuesday, 01 July 2014 12:00 | Publicado en Julio 2014
Tras evaluar diversos CCK's, parecía que SobiPro cumplía con todos mis requisitos para crear un sitio web tipo portafolio (muestrario de trabajos realizados). Lo único desconocido para mí era el nivel de dificultad a la hora de aprender la tecnología XSLT (EXtensible Stylesheet Language). Para aquellos que no lo conocen, XSLT es una tecnología de "plantillas" interpreta un documento XML y genera HTML. Me gustó la idea de poder manipular el modelo de datos junto con la vista. No me gustaba la idea de aprender una nueva tecnología.

Aprendiendo XSLT

Para entender mejor lo que era XSLT, instalé SobiPro y las aplicaciones de prueba y eché un vistazo a los archivos .XSL mediante FTP/Dreamweaver. Afortunadamente, fui capaz de entender fácilmente la sintaxia XSLT.

Donde tuve más dificultad fue a la hora de entender la jerarquía de la arquitectura de SobiPro y el flujo funcional a través de la estructura de archivos. Una vez me familiaricé con la jerarquía Sección, Categoría, Elemento, entendí que podía crear diversos tipos de campos dentro de un Elemento, y que dicho "Elemento" era como un "Artículo" Joomla personalizado. El Elemento es por tanto el formulario de entrada de datos del back-end... en nomenclatura CCK, un "tipo de contenido" personalizado. Este formulario se usa para crear un "elemento" (el nombre que reciben los artículos de SobiPro) al que puede accederse desde el fron end a través de una o varias categorías. Las secciones son simplemente grupos de categorías.  En este punto, pensé en las "secciones" como aplicaciones, dado que los datos de ejemplo que vienen con SobiPro tienen diferentes secciones, cada una de ellas para una aplicación diferente (tienda, inmobiliaria, directorio de empresas, etc.).

El flujo funcional a través de la estructura de archivos puede entenderse más fácilmente si primero se entiende la convención de nombres de SobiPro. Todos los archivos .XSL se encuentran dentro de una carpeta que se encuentra en / components / com_sobipro / usr / templates / nombre-de-mi-seccion (en mi caso, esta última carpeta se llamaba /tbdp). En este punto también entendí que la carpeta "nombre-de-mi-seccion" era una plantilla, además de una aplicación o sección.

Dentro de la carpeta /tbdp/ hay otras carpetas en las que residen los archivos XSLT. Dependiendo del flujo de tu presentación de datos, hay varios archivos XSLT que debes conocer. Para mi aplicación (Nota del T.: el sitio al que se refiere es www.taylorbruce.com), básicamente sólo 4 me interesaban. Estos archivos y sus carpetas eran:

  1. /section/view.xsl - es el que controla la salida cuando el elemento de menú "By Client" se selecciona
  2. /category/view.xsl - es el que controla la salida para el resto de categorías (Digital, Branding, etc).
  3. /common/entries.xsl - se usa para generar el HTML que mostrará un listado de vínculos/imágenes correspondientes a las entradas de una categoría
  4. /entry/details.xsl - se usa para generar el HTML que mostrará los campos de una entrada individual

Una vez entendido que haciendo clic en un elemento de menú iría a (1) o (2), entendí fácilmente las opciones de flujo para mi aplicación. Usé (3) para crear una lista de imágenes/vínculos de proyectos para una categoría, de modo que cuando se hacía clic en el vínculo, el control se pasaba a la vista (4) de esa entrada en concreto dentro de esa categoría. Habiendo estado expuesto a programación en tiempo real, encontré estos flujos de control bastante similares al flujo y control de la programación en tiempo real.

XMLy XSLT

Dentro de SobiPro hay una opción de configuración que permite añadir un parámetro a la URL, y al hacerlo, se muestra el XML generado antes de ser convertido en HTML. Esto da a los desarrolladores un método sencillo de ver datos XML reales durante el proceso de desarrollo del XSLT.

Cuando añades ese parámetro (?xml=1) y ves el código fuente en tu navegador, verás el XML que SobiPro genera para tu aplicación. Aquí hay un ejemplo de una porción de XML generada por mi aplicación:

Ejemplo XML

Ejemplo XML generado por SobiPro

Ejemplo XSLT

Como dije anteriormente, la sintaxis XSLT era sencilla, y fui capaz de reutilizar el XSLT de la sección de prueba para la mayoría de mis necesidades específicas. Aquí hay un pequeño fragmento de código XSLT:

Fragmento XSLT de SobiPro

XSLT y PHP

Además de tener este "modelo" adicional (el documento XML) disponible para el desarrollador, SobiPro proporciona acceso directo a PHP y al entorno Joomla. Se puede tener acceso a PHP fácilmente desde la plantilla XSLT a través de funciones personalizadas, o bien mediante funciones predefinidas en SobiPro. Un ejemplo de función PHP personalizada sería el siguiente, que se usa para establecer el valor de la variable "fromCategory" desde una cookie llamada "fromCategoryCookie":

Llamada PHP desde XSLT en SobiPro

Yendo más allá

Espero que esta introducción a la tecnología XSLT permita a otros no sólo considerar su uso, sino también sentirse cómodos probando nuevas extensiones Joomla y nuevas tecnologías.

A medida que el valor y popularidad de los CCKs continúa creciendo, me gustaría ver más funcionalidad de CCK incorporada a Joomla. Además, habiendo visto el poder de XSL, soy defensor de su uso en Joomla, pues permite a los desarrolladores (opcionalmente) generar XML y también incorporar el uso de XSLT dentro de la arquitectura de plantillas de Joomla. ¿Qué pensáis al respecto? Tengamos una conversación...

NOTA: Este artículo es una traducción del original "Using SobiPro as a CCK", de Dennis Kmetz 

Visto 2726 veces
Etiquetado como Spanish, Desarrollador

Cambiar de idioma

¡Suscríbase!
Su correo electrónico:
Invalid Input

contribuya-articulo p