Para este primer ciclo del proyecto de desarrollo con Joomla en “Manuales Joomla”, hemos trazado como objetivo primario, desarrollar todos los tipos de extensiones existentes en Joomla. Por lo que una vez termine este ciclo, habremos desarrollado al menos un componente, un módulo, un plugin, una plantilla y una librería.
Con este artículo damos comienzo al primer ciclo del proyecto de desarrollo con Joomla. ¿De que se trata el proyecto? ¿Qué objetivos tiene? ¿De que va eso de los ciclos de desarrollo? Desde el siguiente enlace le damos respuesta a estas interrogantes, por lo que les recomendamos que lean esas dos páginas y vean la estructura que tienen estos ciclos.
Como nuestro desarrollo lo vamos a basar para casos reales, “nos han pedido” hacer un sitio para un blog personal, y la funcionalidad que nos han solicitado que no puede faltar es que los visitantes puedan comentar los trabajos. Por tanto, toca ponernos en modo desarrollador y crear un sistema de comentarios para Joomla.
Vista funcional del formulario. Sin acción de envío de comentarios
Antes que nada, analisemos que nos hace falta, para saber que tenemos que hacer.
- Necesitamos mostrar un formulario en cada artículo, el cual nos muestre los campos necesarios para que el lector pueda realizar o expresar su opinión. Para esta tarea, crearemos un plugin.
- Necesitamos mostrar debajo del formulario, una lista con los últimos comentarios del artículo. Esto lo haremos con el mismo plugin previamente creado, ya que sería añadir un layout nuevo al plugin con la lista de los comentarios, debajo del layout del formulario.
- Necesitamos mostrar en el lateral del blog, un bloque con los últimos comentarios realizados en los artículos de una o varias categorías. Para esta tarea, crearemos un módulo.
- Necesitamos proveer una interfaz en donde puedan ser gestionados los comentarios del sitio. Para ello, crearemos un componente.
El componente a parte de proveer en la interfaz de administración de nuestro sitio una forma de gestionar los comentarios, también nos servirá para establecer en él la lógica de nuestra programación para el resto de las extensiones. ¿Qué significa esto? Pues, que todas las consultas que se deban hacer a la base de datos, por ejemplo para extraer los últimos comentarios de un artículo, se desarrollaran dentro del modelo del componente. Esto permite que tengamos todo centralizado, y evitarnos que cada una de las otras extensiones tengan que gestionar sus propios datos, que sin duda representa un sobrecarga innecesaria.
Por tanto, todas estas extensiones que mencionamos anteriormente están coo-relacionadas entre sí, ya que una depende de la otra. En Joomla, hay algo que nos permite esta funcionalidad, los Paquetes (Package). ¡Al fin, llego el código!
Estructura básica del paquete
Creamos una carpeta en alguna parte de nuestra PC con el nombre “pkg_mjcommentsystem”. Dentro, tendrá las subcarpetas:
- extensions: Para almacenar todas las extensiones del paquete
- language: Para los archivos de idioma del paquete
Ahora le toca el turno al manifiesto de nuestro paquete. Para ello, creamos el archivo “pkg_mjcommentsystem.xml” dentro de la carpeta "pkg_mjcommentsystem" y lo editamos para darle esta forma:
Hemos declarado en nuestro manifiesto la existencia de un componente llamado “com_mjcomments” y un archivo de idioma “es-ES.pkg_mjcommentsystem.sys.ini” (Archivo de idioma convenciones de nomenclatura y precedencia). Por tanto, vamos a crear estas carpetas y el archivo de idioma que contendrá las cadenas de texto traducibles que tenemos en el manifiesto, quedándonos todo de esta forma:
Con vista de probar si ya nuestro paquete está funcionando bien, pongamos lo necesario para que el componente se instale correctamente, a pesar de que no haga nada aún.
La instalación de un componente en Joomla consta generalmente de dos interfaces, una para la administración (backend) y otra para la parte pública (frontend). Por lo tanto, crearemos dentro de la carpeta “com_mjcomments” una carpeta llamada “admin” y otra carpeta llamada “site”. Para la correcta instalación de un componente, Joomla establece estos nombres así. Luego crearemos los puntos de entrada a ambos lados. Para ello creamos un archivo php llamado “mjcomments.php” dentro de la carpeta “admin”, y otro archivo de igual nombre y tipo, dentro de la carpeta “site”. No hay que escribir nada de código dentro de ellos, dejenlo en blanco por el momento.
Por último creamos el archivo manifiesto de nuestro componente. El nombre y el tipo sería “com_mjcomments.xml” y lo ponemos dentro de la carpeta “com_mjcomments”. Ahora lo abrimos para editarlo, quedando todo de esta forma:
En este manifiesto le estamos diciendo al instalador de Joomla, que lea dentro de la carpeta “site” y coloque todos los archivos y carpetas que ahí se encuentran en la ruta raíz_sitio/components/com_mjcomments (línea 13 - 15). Y que lea dentro de la carpeta “admin” y coloque todo lo que encuentre en la ruta raíz_sitio/administrator/components/com_mjcomments (línea 17 - 21). Vean que la única diferencia son las etiquetas <administration>.....</administration>. Con esto ya podemos probar si podemos o no instalar nuestro paquete. Así que abrimos la administración del sitio, y vamos a Extensiones->Gestionar. Dentro escogemos la opción Instalar desde una carpeta y ponemos la ruta absoluta en donde está nuestro paquete de extensiones, por ejemplo, en mi caso bajo el SO Windows sería este: D:\Carlos\Joomla\Code Repo\pkg_mjcommentsystem. Luego le damos a instalar para completar el proceso.
Todo funciona correctamente. Ya tenemos un registro nuevo en la tabla “#__extensions” de nuestro paquete, permitiéndonos de esta forma poder desinstalar o instalar un grupo de extensiones comunes entre sí, supliendo de esta forma la necesidad de la gestión de dependencia en las extensiones.
Desarrollo básico del manifiesto
Al principio comentamos que el componente va a ser el núcleo central de nuestro desarrollo, ya que en él se iban a gestionar todos los datos que van a necesitar las demás extensiones. Vamos a mostrar una imagen, que siempre dice más:
Ahora se entiende mejor qué queremos decir cuando tenemos centralizadas todas nuestras consultas. Dentro del componente se llevará a cabo todo el saneamiento de los datos que se están manejando, para luego enviar los mismo de manera correcta a cada una de las extensiones que los solicitaron.
Teniendo esto claro, antes de seguir debemos volver hacer otro análisis. ¿Que se necesita para crear una vista funcional del formulario? La respuesta a esta pregunta es el objetivo de este primer tutorial.
Lo primero que necesitamos, es definir que campos vamos a utilizar en nuestro formulario y en donde vamos a guardar los valores entrados. Para ello vamos primero al archivo manifiesto de nuestro componente “com_mjcomments.xml” y lo abrimos para editarlo, añadiendo lo siguiente:
Aquí le decimos al instalador de Joomla donde se encuentra el archivo para crear las tablas necesarias en la base de datos (línea 13 - 17). También le decimos dónde se encuentra el archivo para desinstalar estas mismas tablas, en caso que el componente sea desinstalado (línea 18 - 22). Y por último, le decimos en donde tiene que buscar en caso de que el componente sea actualizado (línea 23 - 27).
Nota: Notarán que en la organización que le hemos dado a las carpetas, existe una carpeta llamada “mysql”, esto es porque en cada etiqueta <file> el driver de la base de datos que está presente es el de “mysql”, por lo que si queremos darle soporte a “postgresql” por ejemplo, tenemos que añadir una nueva etiqueta con el driver y añadir una nueva carpeta con el nombre correspondiente.
Ahora creamos todas estas carpetas con sus archivos dentro de la carpeta “admin” del componente. Empecemos con “install.sql”:
¡Gracias a CComment! por facilitar los comentarios en ManualesJoomla.es!