Creación de módulos en Joomla! 1.6

modulo01A menudo en Joomla es necesario crear nuestros propios módulos para poder mantener ordenados nuestro código y para poder parametrizar sus opciones. El procedimiento de programar módulos en Joomla 1.6 es muy parecido al de Joomla 1.5.

 Este Tutorial Joomla! explicará como realizar desde cero un módulo para Joomla! 1.6 a través de un ejemplo. El ejemplo que proponemos es un módulo que contará con dos parámetros en el backend:

Mostrar: un checkbox (si o no) que mostrará o no el mensaje

Mensaje: un inputtext (texto a mostrar al cliente).

Estructura del componente 

La estructura de un módulo en Joomla! 1.6 mantiene el mismo patrón que la de un módulo en Joomla! 1.5. Esta estructura es la siguiente:

estructura modulo joomla

  • La carpeta mod_modulo contiene todos los archivos necesarios para el correcto funcionamiento de nuestro módulo.
  • El archivo index.html controla que no se pueda acceder directamente a la carpeta.
  • El archivo mod_modulo.xml contiene las instrucciones XML para su correcta instalación del módulo en el administrador.
  • El archivo mod_modulo.php envía el archivo controlador (helper.php) hacia la vista (tmpl/default.php)
  • El archivo helper.php es el controlador que contiene las clases y métodos para recuperar los datos o procesarlos.
  • La carpeta tmpl contiene los archivos de la vista, es decir la manera como se visualizará del lado del cliente.
    • El archivo index.html controla que no se pueda acceder directamente a la carpeta.
    • El archivo default.php contiene la forma cómo se visualizaran los datos en el lado del cliente.

Los archivos en los que se basará el ejemplo son el mod_modulo.xml, mod_modulo.php, helper.php y default.php

 

Mod_modulo.xml

El archivo mod_modulo.xml es el encargado de definir las instrucciones para la instalación del módulo en el administrador. El contenido de este archivo se divide en tres partes:

  1. Descripción del módulo (nombre, autor, versión...).
  2. Archivos y carpetas que forman parte del módulo.
  3. Atributos que tendrá el módulo, tanto los básicos como los avanzados.

 Todo esto se puede ver en el ejemplo:

{codecitation}

<?xml version="1.0" encoding="utf-8"?>

<extension type="module" version="1.6.0" client="site">

 

<name>mod_modulo</name>

<author>WebActualizable.com</author>

<creationDate>Marzo 2011</creationDate>

<copyright>Copyright (C) 2008 - 2011 All rights reserved.</copyright>

<license>Leer licencia</license>

<authorEmail></authorEmail>

<authorUrl></authorUrl>

<version>1.6.0</version>

<description>Ejemplo</description>

<files>

<filename module="mod_modulo">mod_modulo.php</filename>

<folder>tmpl</folder>

<filename>helper.php</filename>

<filename>index.html</filename>

<filename>mod_modulo.xml</filename>

</files>

 

<config>

<fields name="params">

<fieldset name="basic">

<field name="mostrar" type="radio" default="0" label="Mostrar Mensaje" description="Activar o desactivar mostrar mensaje">

<option value="1">Si</option> 

<option value="0">No</option>

</field>

<field name="mensaje" type="text" default="" label="Mensaje" description="Mensaje" />

</fieldset>

<fieldset name="advanced">

<field name="layout" type="modulelayout" label="JFIELD_ALT_LAYOUT_LABEL" description="JFIELD_ALT_MODULE_LAYOUT_DESC" />

<field name="moduleclass_sfx" type="text" label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" />

<field name="cache" type="list" default="1" label="COM_MODULES_FIELD_CACHING_LABEL" description="COM_MODULES_FIELD_CACHING_DESC">

<option value="1">JGLOBAL_USE_GLOBAL</option>

<option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option>

</field>

<field name="cache_time" type="text" default="900" label="COM_MODULES_FIELD_CACHE_TIME_LABEL" description="COM_MODULES_FIELD_CACHE_TIME_DESC" />

<field name="cachemode" type="hidden" default="static">

<option value="static"></option>

</field>

</fieldset>

</fields>

</config>

</extension>

{/codecitation}

 

Mod_modulo.php

El archivo mod_modulo.php es el que hace de intermediario entre las operaciones y la vista de usuario. Se puede ver su composición en el ejemplo:

{codecitation}

<?php

// para que no se pueda tener acceso por otro lado a menos que se llame correctamente el módulo

defined('_JEXEC') or die;

 

// Incluimos el helper.php

require_once dirname(__FILE__).DS.'helper.php';

 

//asignamos a una variable los parámetros recogidos

$list = modMensajeHelper::getList($params);

 

//le asignamos a una variable el sufijo de un clase, es otro parámetro del lado del administrador

 

$moduleclass_sfx = htmlspecialchars($params->get('moduleclass_sfx'));

//se llama al archivo que contendrá finalmente la vista del módulo por el lado del cliente

require JModuleHelper::getLayoutPath('mod_modulo', $params->get('layout', 'default'));

?>

{/codecitation}

 

Helper.php

El archivo helper.php es el controlador que contiene las clases y métodos para recuperar los datos o procesarlos. Se puede ver su composición en el ejemplo:

{codecitation}

<?php

// para que no se pueda tener acceso por otro lado a menos que se llame correctamente el módulo

defined('_JEXEC') or die;

//creamos nuestra clase de ayuda para nuestro módulo

//por convención se antepone el prefijo mod en minúsculas y

// termina con Helper, podemos crear tantas clases como las que necesitamos para nuestra labor.

class modMensajeHelper

{

//creamos nuestro método, también por convención el prefijo get y acontinuación el nombre del método

//aqui joomla 1.6 mejora la llamada a los métodos definiéndolos estáticamente, para no crear ambieguedad al momento de llamarlos

static function getList($params)

{

//Recogemos los parámetros de nuestro módulo puestos desde el lado del administrador

$mostrar= $params->get('mostrar');

//comprobamos si está marcado la opcion mostrar el mensaje

if ($mostrar==1) {

//si está marcado entonces, asignamos a nuestra variable el dato recodigo por el método get

$mensaje= $params->get('mensaje'); }

//De lo contrario le asignamos vacío.

else { $mensaje ="" ; }

//Se devuelve la variable que contiene el mensaje

return $mensaje;

}

}

{/codecitation}

 

Default.php

En el archivo default.php se define la forma cómo se visualizaran los datos en el lado del cliente. Se puede ver su composición en el ejemplo:

{codecitation}

<?php

// para que no se pueda tener acceso por otro lado a menos que se llame correctamente el módulo

defined('_JEXEC') or die;

 

?>

<!--se le se está asginado un sufijo si es que en el parámetro del lado del cliente se ingreso una.-->

<dl class="mensaje-module<?php echo $moduleclass_sfx ?>">

 

<?php //echo $list." proba" ;

//Se muestra el parámetro recogido por nuesro archivo helper.

echo $list ;

?>

{/codecitation}

 

Sobre el autor

Xavier Pacheco es Ingeniero Técnico en Informática de Sistemas. Forma parte del equipo de WebActualizable (www.webactualizable.com), empresa especializada en el desarrollo de proyectos sobre Joomla

Escribir un comentario

Por favor procura que tus comentarios estén relacionados con la entrada, comenta con tu nombre y no pongas enlaces en tu comentario. Intenta también respetar a los demás lectores, los comentarios off topic, promocionales, ofensivos o ilegales serán editados y borrados.


Código de seguridad
Refescar