Creación de módulos en Joomla!

Existen 5 tipos de extensiones distintas en Joomla: módulos, componentes, plugins, plantillas y lenguajes. Los módulos, de cuya creación hablaremos en este pequeño tutorial, son uno de los tipos más sencillos: se trata de pequeñas aplicaciones cuya salida puede mostrarse en cualquier posición de entre las definidas en la plantilla, y de las cuales podemos tener un número cualquiera por página.

Un módulo en su forma más básica consiste sólo en un par de archivos, un archivo XML con información sobre el módulo y su instalación y un archivo PHP con el código del módulo en sí.

A modo de ejemplo vamos a ver cómo crear un pequeño módulo «Hola Mundo».

Primero crearemos una carpeta mod_holamundo para contener nuestros archivos. En esta carpeta crearemos un archivo mod_holamundo.xml con el siguiente contenido

<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5">
  <name>Hola Mundo</name>
  <author>Raul Gonzalez</author>
  <creationDate>Enero 2010</creationDate>
  <copyright>(C) Raul Gonzalez</copyright>
  <license>GPL</license>
  <authorUrl>http://mundogeek.net/</authorUrl>
  <authorEmail>zootropo en gmail</authorEmail>
  <version>0.1</version>
  <description>Nuestro modulo de ejemplo</description>
  <files>
    <filename module="mod_holamundo">mod_holamundo.php</filename>
  </files>
</install>

como vemos en este archivo podemos indicar el nombre del módulo, el autor, la fecha de creación, la versión, la descripción de la funcionalidad del módulo, o los archivos que conforman el módulo, entre otros (he evitado el uso de acentos para ahorrarnos complicaciones con la codificación de caracteres).

Veamos ahora el código del archivo mod_holamundo.php. Este código podría ser tan sencillo como

<?php echo 'Hola mundo'; ?>

Sin embargo, es una buena práctica evitar que se pueda ejecutar el módulo directamente, como si de un script independiente de Joomla! se tratase. Esto se hace comprobando si está definida la constante _JEXEC, y en caso contrario deteniendo la ejecución del script.

<?php
  defined('_JEXEC') or die('Este script no se puede ejecutar de forma independiente.');
  echo 'Hola mundo';
?>

Ahora sí, ya tenemos listo nuestro módulo. Una vez hecho esto basta crear un archivo ZIP que contenga nuestro archivo XML y PHP usando, por ejemplo, WinZip o WinRAR, y ya podremos instalarlo desde la interfaz de administración de Joomla, dirigiéndonos a Extensiones -> Instalar/Desinstalar y seleccionando nuestro archivo .zip en la carpeta en la que se encuentre. Al instalar el módulo se habrá creado una nueva carpeta mod_holamundo en la carpeta modules de Joomla.

Si seleccionamos ahora Extensiones -> Administrador de módulos y ordenamos por ID veremos nuestro nuevo módulo Hola Mundo, listo para usarse. Basta marcarlo como Publicado y seleccionar la posición en la que queremos que se muestre en las opciones del módulo, a las que se puede acceder haciendo clic sobre su nombre.

Añadir opciones al módulo

Vamos a complicar un poco la cosa permitiendo al administrador del sitio elegir a quién quiere saludar. Es decir, vamos a modificar el módulo de forma que en esta ocasión se imprima «Hola» seguido de un texto que el administrador pueda especificar en las opciones del módulo.

Lo primero que tenemos que hacer es modificar el archivo XML y añadir una nueva etiqueta params. Dentro de esta etiqueta tendremos una etiqueta param por cada opción de configuración que requiera el módulo. En nuestro caso sólo necesitaremos un parámetro, de tipo text (una caja de texto) para más señas. Podéis consultar el resto de tipos disponibles en Parámetros para las extensiones de Joomla!.

<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5">
  <name>Hola Mundo</name>
  <author>Raul Gonzalez</author>
  <creationDate>Enero 2010</creationDate>
  <authorUrl>http://mundogeek.net/</authorUrl>
  <version>0.1</version>
  <description>Nuestro modulo de ejemplo</description>
  <files>
    <filename module="mod_holamundo">mod_holamundo.php</filename>
  </files>
  <params>
    <param name="quien" type="text" size="20" default="mundo"
           label="¿A quien quieres saludar?" description="Persona, animal u objeto a quien quieres saludar" />
  </params>
</install>

El valor de esta opción de configuración se podrá obtener en el código del módulo haciendo uso del método get del objeto $params, al que se le pasa el nombre del parámetro y, opcionalmente, el valor a utilizar por defecto si el usuario no ha introducido ningún valor para este campo. De esta forma, el código de nuestro módulo quedaría tal que así:

<?php
  defined('_JEXEC') or die('Este script no se puede ejecutar de forma independiente.');
  echo 'Hola ', $params->get('quien', 'mundo');
?>

Y listo. Desinstala el módulo anterior, comprime ambos archivos, e instala la nueva versión del módulo para disfrutar de nuestra pequeña gran joya.

28 comentarios en «Creación de módulos en Joomla!»

  1. Hola Zootropo, gracias por el apote, a los que nos gusta Joomla agradecemos que se hable de él de vez en cuando, ya que últimamente se encuentra algo eclipsado por WordPress y es un sistema muy bueno y versatil.
    De paso aprovecho para indicar que en mi blog hay un tutorial donde se explica un módulo un poco más complicado, usando el patrón MVC para módulos que han implementado en el framework de Joomla, y que podría servir a alguien.

    Un saludo!

  2. Pingback: Tipos de parámetros para las extensiones de Joomla!

  3. Os agradezco el trabajo a los dos; yo llegué al de NoSoloCódigo y me sirvió para lo que necesitaba en aquél momento, pero este, más básico, puede servir para clarificar cosas y aprender más escalonadamente.

  4. Pingback: Bases de datos en Joomla!

  5. Zootropo….este tutorial me ha ayudado mucho , esta elegante para los que inician o conocen poco… con el he podido entender muchas cosas y modificar otros modulos… pero me quedan preguntas de inexperto:
    – como hacer que mi modulo ejecute mas de una consulta indistintamente, quiero decir que mi cliente pueda con el, digamos, seleccionar, eliminar, actualizar, cualquier ejemplo me llena.
    – quisiera lograr un pase de parametros en mi modulo.
    – quisiera saber como mostrar mi modulo en una pagina y en otras no.

    otra cosa… la parte e los parametros que explicas, lo he intentado varias veces pero el modulo aparece sin parametros en la administracion, uso joomla 1.5.10

  6. Pingback: 101 programas gratis

  7. Pingback: 100 programas gratis « Bichotoblog

  8. Pingback: Creación de componentes para Joomla

  9. Pingback: » Creación de módulos en Joomla!

  10. Hola gracias por este aporte para los que somos novatos, esta genial, mi pregunta es la siguiente y disculpen la molestia, lo que necesito es un simple modulo para poner texto o html mas practico para noticias rapidas o simples comentarios que quiero que vean, me pueden ayudar, gracias
    Jose

  11. Hola tengo un css funcionando perfectamente hecho por un diseñador (yo soy más programador), como lo agrego fácilmente a mi modulo.

    Abrazos.

  12. Hola, alguien me puede dar una referencia para hacer un modulo que coje información de la base de datos?
    quiero hacer un modulo de busqueda para k2 que tiene lo que necesito menos eso.
    Saludos

  13. muchas gracias por el tuto, me ha servido mcucho para empesar, pero al mismo tiempo me ha dejado con muchas inquietudes, una de ellas, es por ejemplo como crear un modulo que sea capas de subir informacion de mi ordenador a joomla, que seria la base para empesar a crear por ejemplo galerias de imagenes.

  14. Buenas probe todo lo que decias paso a paso me funciono todo perfecto hasta donde dices sobre los parámetros, efectivamente en el se me imprime el defecto de «mundo» pero no veo como puedo especificarlo desde el administrator (estoy en joomla 2.5) Gracias…..

  15. estoy usando joomla 3.2.3 y no se pq no me sale este ejemplo me pone
    JInstaller: :Instalar: No se ha podido encontrar el archivo XML de configuración de Joomla!
    q alguien me ayude

Responder a José Cancelar respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.