Creación de módulos en Joomla! 1.6

Joomla - Tutoriales

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:

<?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>

 

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:

<?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'));
?>

 

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:

<?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;
}
}

 

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:

<?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 ;
?>

 

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


blog comments powered by Disqus

Aprende a crear todo tipo de sitios web

Sigue este blog por

Suscríbete a Ayuda Joomla y recibe las actualizaciones de forma automática.

RSS Facebook Twitter

Si te suscribes a nuestra newsletter recibirás una recopilación de 16 plantillas para Joomla gratuitas y cupones de descuento para extensiones y servicios premium de Joomla

Pack de plantillas Ayuda Joomla

Mi email es:

Patrocinadores

Plantillas Joomla
programacion y diseño joomla
Plantillas joomla
Monito Joomla
Comunidad Hispana K2

Comentarios recientes

Zona de Usuarios

Estadísticas

mod_vvisit_counterHoy6204
mod_vvisit_counterAyer4506
mod_vvisit_counterEsta semana6204
mod_vvisit_counterEste mes120024
Suscríbete al feed de Ayuda Joomla