Joomla Developing


Estas semanas me he enfrascado en un proyecto que trata del desarrollo de un componente para joomla.

Realmente nunca habia utilizado joomla ni como desarrollador ni como administrador de contenidos, asi que tuve que ponerme a conocer joomla en forma rapida y sobre todo aprender como trabaja, sus reglas, apis, estructura, herramientas, etc.

Como estoy lejos de ser experto en el desarrollo bajo joomla, esto solo son algunas notas de cosas que he ido aprendiendo, si alguien busca manuales o ayuda para desarrollar componentes para joomla dejo el siguiente enlace, de varios sitios que visite me parecio el mejor:




http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_1
Es una serie de 6 articulos [English], como veran en la url el enlace lleva a la parte 1 y de ahí se puede seguria a la continuación.

En el siguiente hay otros articulos en español.
http://www.nosolocodigo.com/programacion-de-componentes-bajo-joomla-15

Aclaro que todo lo expuesto en para joomla 1.5

A modo de resumen al trabajar bajo joomla ya tienes todo un framework de soporte, ya cuentas con el soporte de la página, control de usuarios, control de menus, de recursos media (imagenes, videos, flash), control de acceso a base de datos, control de maquetacion y estilos (templates)... Así que lo que queda es hacer unicamente un componente con tareas muy especificas de lo que tu quieras, por ejemplo un control de ventas, de produtos, o lo que se te ocurra.

Antes de programar cualquier cosa, es muy probable que ya exista un plugin o componente que haga eso mismo puede ser de licencia libre o de licencia comercial, pero de existir solo hay que obtenerlo, instalarlo y comenzar a utilizarlo.

En el caso de mi proyecto existe un componente que hace algo similar pero es para joomla 1.0 y mi cliente quiere trabajar con joomla 1.5, el componente existente para joomla 1.0 no es compatible con joomla 1.5, realmente no hice una gran investigacion para ver si existe algo similar para joomla 1.5 asi que hice mi propuesta de desarrollo de un componente nuevo para joomla 1.5 y ésta fue aceptada, yeah!

Cosas de joomla que me han parecido relevantes:

  • La falta compatibilidad entre versiones
    Como dije, un componente desarrollado para joomla 1.0 no es compatible con joomla 1.5, para lo mismo si actualizas a 1.6, 1.7 o 2.5 No se por que los desarrolladores de joomla trabajan de esa forma, esto hace que sea necesario rehacer componentes si quieres que sigan vigentes cada nueva version de joomla, en el caso del componente de mi cliente para joomla 1.0 ese componente quedo descontinuado
  • El modo de trabajo MVC [model-view-controller] de joomla y su particular implementación, como desarrollador me parecio una buena forma para desarrollar, una vez entendido es fácil y ahorra tiempo.
  • La separación del proyecto en modulos para back-end y front-end, administración y usuarios respectivamente, muy bien.
  • Back-end. Decidí iniciar mi proyecto con la parte del back end, que de hecho es más difícil ya que maneja mas elementos que en el front end, hay que conocer la forma de maquetar y las funciones estandar tales como add, save, delete para el caso de manejo de registros en la base de datos.
  • Front-end. Despues de haber hecho el back-end el front end es mucho mas sencillo, solo hay que generar vistas [views] y el framework se encarga de llamarlas desde enlaces y mostrarlas como articulos, contenidos u otra manera, que se configure por el administrador de contenidos, para generar las vistas es tan simple como algunas consultas a la bd e imprimir el contenido, quizas maquetar un poco pero realmente no es muy necesario.
  • Tablas. Hablando de maquetar no me gusta que joomla hace un uso excesivo de tablas para maquetar todo, cosas muy sencillas que se podrían manejar con una regla CSS de tipo text-align:right; joomla lo hace con tablas, claro que estando como desarrollador uno puede evitar esas practicas en lo propio pero joomla y la mayoria de los componentes usan tablas en exceso.
  • MooTools. Al igual que con joomla, no tenia experiencia usando mootools, para scripts y ajax he manejado jquery bastante, pero joomla usa mootools y tuve que entrarle ya que necesitaba hacer alguna cosas por medio de scripts js, de hecho joomla ya provee de muchas funcionalidades que solo hay que llamar, como validacion de entradas y controles dinamicos (Calendar por ejemplo para un control calendario para elegir fechas), pero necesitaba hacer una tareas especificas y tuve que crearlas en mootools e integrarlas a mi componente.
  • Manejo de BD. En este aspecto heredando de JTable te ahorras bastante trabajo, solo hay que definir bien las tablas que usas en la BD crear las clases respectivas por tabla y los controles en las vistas y siguiendo las convenciones joomla se encarga de los insert, updates, deletes y tu no necesitas entrar a crear sentencias sql ni a hacer llamadas directas a MySQL.

    Para el caso de manejar relaciones entre tablas de la BD ya no supe como hacerlo directamente con joomla y lo codifique a mi manera, por falta de tiempo no pude encontrar si hay la forma en joomla y quizas mi solucion no fue la optima pero trabaja y con la marcha del tiempo habia que avanzar, dejo para una oportunidad posterior investigar si joomla dentro de sus funciones te maneja las relaciones y como lo hace.
  • Instalador. Siguiendo las convenciones y reglas es relativemente sencillo crear un instalador del componente creado y poder distribuirlo para usuarios de joomla, este es otro punto interesante ya que permite ademas de instalar los modulos ejecutar scripts sql (creacion de tablas generalmente) subir recursos como imagenes u otro archivos necesarios para tener tu componente a full.

Estos dias estoy afinando puntos de mi proyecto ya para terminarlo, como es un proyecto bajo pedido no creo que lo vaya a publicar por que no sere yo el propietario final pero vere si es posible publicar alguna descripcion ya que para mi ha sido muy interesante desarrollar bajo joomla, hay muchas opiniones encontradas y no soy quien para decir si este framework es bueno o no pero la experiencia de desarrollar bajo un framework mayor ha sido muy ilustrativa.

Comentarios

Entradas populares