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.


Comentarios
  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!

    Responder

  2. [...] del tipo text del que ya hablamos en Creación de módulos para Joomla! existen muchos otros tipos de parámetros que podemos utilizar a la hora de desarrollar los [...]

    Responder

  3. Adri.

    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.

    Responder

  4. Muy util Zootropo ;)

    Responder

  5. Excelente aporte!

    Responder

  6. [...] con nuestro último tutorial en el que vimos cómo desarrollar módulos para Joomla veremos ahora cómo trabajar con bases de datos al programar para este CMS, bien utilizando [...]

    Responder

  7. Charlitin

    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

    Responder

  8. [...] del mercado. En Mundo geek he publicado varios artículos sobre desarrollo para este CMS, como Creación de módulos en Joomla!, Tipos de parámetros para las extensiones de Joomla! y Bases de datos en [...]

    Responder

  9. [...] del mercado. En Mundo geek he publicado varios artículos sobre desarrollo para este CMS, como Creación de módulos en Joomla!, Tipos de parámetros para las extensiones de Joomla! y Bases de datos en [...]

    Responder

  10. [...] Siguiendo con nuestra serie de tutoriales sobre Joomla, esta vez hablaremos sobre el desarrollo de componentes, otro de los tipos de extensiones disponibles para este CMS, junto con los plugins, los temas, las traducciones o los módulos. [...]

    Responder

  11. Jose Chaves

    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

    Responder

  12. muy buen articulo, de mucha ayuda

    Responder

  13. RDOrlando

    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.

    Responder

  14. job

    muy bueno el tutorial

    Responder

  15. job

    gracias por el tutorial

    Responder

  16. Car.

    Excelente, gracias!

    Responder

  17. Fran

    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

    Responder

  18. José

    Genial. Te felicito, me ha sido muy util.
    Gracias!!

    Responder

  19. Joseph

    Hola

    Una consulta, esto serviría para Joomla 2.5 ?
    Saludos,

    Responder

  20. Eduardo BT

    Excelente material gracias por compartirlo, me sirvió de mucho.

    Responder

  21. deiby

    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.

    Responder

  22. Estuvo muy bien explicado este tutorial, si que es más facil crear un módulo que un plugin.

    Responder

  23. Probé todo el tutorial, buenísimo; pero la parte de los parametros no funcionó. Estoy en Joomla 2.5, puede ser por eso?

    Responder

  24. jerson gomez

    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…..

    Responder

  25. raulrosado91

    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

Deja un comentario