Joomla! Avanzado – Crear extensiones a medida (II)

Como vimos en el artículo anterior de Joomla! Avanzado, este conocido CMS resulta muy versátil a la hora de añadir nuevas funcionalidades a nuestros proyectos web. En este ejemplo de creación de extensiones, lo ejemplificaremos con la creación de módulos. Los módulos son bloques o segmentos de una página que se colocan dentro de las plantillas y el administrador del CMS puede decidir mediante el backoffice donde colocarlas, dependiendo de sus intereses y el aspecto de su sitio.

En este artículo, veremos cómo crear un módulo compatible con la versión 3 de Joomla! y en adelante. Será un sencillo “Hola Mundo” que nos introduzca sin demasiadas complicaciones en esta tarea.

Serial joomla

Estructura básica de un módulo

Un módulo sencillo está compuesto por esta estructura de directorios y carpetas.

Carpeta tmpl, donde se colocan las plantillas

Archivo helper.php, que tiene una serie de funciones útiles para obtener los datos.

Archivo mod_tu_module.php, que es el punto de entrada

Archivo mod_tu_module.xml, que es  el Manifiesto que da información sobre el módulo y sus dependencias, autor, etc.

Obviamente, tu_module lo sustituirás por el nombre de tu módulo. En nuestro caso será “holamundo”.

archivos-modulo-basico

En la imagen anteriorl encuentras la estrutura del módulo básico. Además de los archivos que mencionamos, observarás que hay dos index.html. Están ahí solo por motivos de seguridad, para prevenir posibles listados de directorio si alguien localiza la carpeta y accede a ella en un Apache que tenga activado el listado de directorio en carpetas sin index.

Para quien conozca MVC y a modo de aclaración, podemos imaginar que tmpl es la carpeta donde colocaríamos las vistas, helper.php sería lo correspondiente al modelo y mod_sample_module.php haría las veces de controlador.

A partir de aquí, la estructura de carpetas puede evolucionar bastante y hacerse mucho más compleja. De momento, no queremos asustar a nadie y que el aprendizaje sea lo más práctico posible, así que iremos más adelante agregando elementos a esta estructura.

Archivo mod_holamundo.php

Este es el punto de entrada para un módulo, algo así como el controlador del módulo, que tiene que realizar diversas tareas:

  • Incluir el helper.php (recuerda que este archivo tiene las funciones que necesita usar el módulo para recopilar los datos)
  • Invocar las funciones apropiadas dentro de helper.php
  • Invocar al template para generar la salida del módulo.
<?php
// No permitimos acceso directo
defined('_JEXEC') or die;
// Incluir el helper
require_once dirname(__FILE__) . '/helper.php';

// Invocar las funciones para recibir los datos
$saludo = modHolaMundoHelper::getSaludo();
// Llamar a la plantilla del modulo
require JModuleHelper::getLayoutPath('mod_holamundo');

Archivo helper.php

Ahora veamos el archivo helper.php. Recordemos que sirve para devolver datos. Organizamos el código por medio de una clase que tiene los métodos de cada una de las operaciones que se desean hacer con los datos. En este caso, devolvemos una simple cadena, pero en la práctica generalmente tienen varias funciones y en ellas se realizan accesos a la base de datos o servicios web.

<?php
class ModHolaMundoHelper
 {
 public static function getSaludo()
 {
 return 'Hola Mundo!';
 }
 }

Archivo tmpl/default.php

La plantilla  contiene un único texto “Hola Mundo” pero obviamente aquí podemos meter todo el HTML que sea necesario. Si necesitamos usar CSS, veremos más adelante que el método correcto de incluirlo es por medio de funciones específicas de Joomla!. De momento, nos contentaremos con escribir ese pequeño texto.

<?php
 // No direct access
 defined('_JEXEC') or die; ?>
 <?php echo $saludo; ?>

Manifiesto: mod_holamundo.xml

Vamos a finalizar con el archivo Manifiesto, que es un XML donde indicamos una serie de informaciones para los posibles usuarios del módulo y para el instalador de Joomla!.

<?xml version="1.0" encoding="utf-8"?>
 <extension type="module" version="3.1.0" client="site" method="upgrade">
 <name>Hola mundo!</name>
 <author>Nombre del creador</author>
 <version>1.0.1</version>
 <description>Un "hola mundo" de los módulos.</description>
 <files>
 <filename>mod_holamundo.xml</filename>
 <filename module="mod_holamundo">mod_holamundo.php</filename>
 <filename>index.html</filename>
 <filename>helper.php</filename>
 <filename>tmpl/default.php</filename>
 <filename>tmpl/index.html</filename>
 </files>
 <config>
 </config>
 </extension>

Como ves, el archivo XML se parece mucho a un HTML, donde los datos se encierran por etiquetas. Todos estos archivos le dicen cosas al administrador de Joomla! y facilitan el proceso de descripción del módulo, pero además el de instalación.

En el elemento <files> encuentras una serie de elementos <filename> que tienen enumerados todos los archivos de este módulo y en algunos casos incluso detallan el rol que tienen esos archivos.

¡Módulo completo!

Ahora nos falta instalar la extensión y luego gestionar los módulos, todo desde el administrador de Joomla!, proceso que detallaremos en próximos artículos.

Compartir

Share on FacebookTweet about this on TwitterShare on LinkedInEmail this to someoneShare on Google+