View
559
Download
3
Embed Size (px)
DESCRIPTION
Crear módulos en Joomla!, por Leonel CantónPresentación 2 de Abril de 2011, Taller Joomla! para Universidad Galileo
Citation preview
Módulos en Joomla!
Leonel Cantón @leonelcanton
2www.joomlagt.org
Estructura de Archivos
Por estandarización todos los módulos deben tener por lo menos estos archivos
Abril 2011
3www.joomlagt.org
mod_NombreModulo.php
<?php /** * Modulo de disponibiliad de eventos - joomlagt.prg * * @license GNU/GPL, see LICENSE.php * mod_eventos is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. */ // no acceso directodefined( '_JEXEC' ) or die( 'Restricted access' ); // incluir al helper que devolverá los datos, solo una vezrequire_once( dirname(__FILE__).DS.'helper.php' ); $eventos = modEventosHelper::getDisponibilidad( $params );require( JModuleHelper::getLayoutPath( 'mod_eventos','default') );
?>
Abril 2011
4www.joomlagt.org
mod_NombreModulo.php
defined( '_JEXEC' ) or die( 'Restricted access' );
Abril 2011
•Garantiza que el archivo únicamente se puede acceder con el motor de Joomla!, los accesos directos no son permitidos.
•Todos los archivos en Joomla! deberían iniciar con esta instrucción
5www.joomlagt.org
mod_NombreModulo.php
require_once( dirname(__FILE__).DS.'helper.php' );
Abril 2011
•El archivo helper.php es donde se realiza todo el procesamiento de datos.
•Recordar que Joomla! utiliza MVC
6www.joomlagt.org
mod_NombreModulo.php
$eventos = modEventosHelper::getDisponibilidad( $params );
Abril 2011
•Almacena en la variable $eventos el resultado de la función getDisponibilidad, que esta definida en el helper.php
•La variable $eventos puede ser consultada del el template del módulo
7www.joomlagt.org
mod_NombreModulo.php
require( JModuleHelper::getLayoutPath( 'mod_eventos','default') );
Abril 2011
•Esta instrucción nos devuelve la ruta del layout que utilizará nuestro módulo
8www.joomlagt.org
mod_NombreModulo.xml
<?xml version="1.0" encoding="utf-8"?><install type="module" version="1.5.0">
<name>Disponibilidad en el Evento</name><author>Leonel Canton</author>
<version>1.5.0</version> <creationDate>01.04.2011</creationDate> <description>Modulo que muestra los asientos disponibles en un
evento</description><authorEmail>[email protected]</authorEmail>
<files>……</files><language>………</language><params> <param name="class_sfx" type="text" default="" label="Sufijo Clase"
description="PARAMEVENTOSCLASSSUFFIX" />………..</params></install>
Abril 2011
9www.joomlagt.org
mod_NombreModulo.xml
Datos Generales del Módulo
Estos datos se ven reflejados en el administrador•Al instalar•Al configurar•Al eliminar
Abril 2011
<?xml version="1.0" encoding="utf-8"?><install type="module" version="1.5.0">
<name>Disponibilidad en el Evento</name><author>Leonel Canton</author>
<version>1.5.0</version> <creationDate>01.04.2011</creationDate> <description>asientos disponibles en un evento</description>
<authorEmail>[email protected]</authorEmail>
10www.joomlagt.org
mod_NombreModulo.xml
<files>……</files>
Abril 2011
Aquí se incluyen todos los archivos incluidos en el módulo
<files><filename>mod_eventos.xml</filename><filename
module="mod_eventos">mod_eventos.php</filename> <filename>helper.php</filename>
<filename>index.html</filename> <filename>tmpl/default.php</filename> <filename>tmpl/index.html</filename> </files>
11www.joomlagt.org
mod_NombreModulo.xml
<languages>……</languages>
Abril 2011
Aquí se incluyen todos los archivos de idioma que incluidos en el módulo
<languages><!-- Any language files included with the module --><language tag="es-ES">es-ES.mod_eventos.ini</language><language tag="en-GB">en-GB.mod_eventos.ini</language></languages>
12www.joomlagt.org
mod_NombreModulo.xml
<params>……</params>
Abril 2011
Aquí se incluyen todos los parámetros que deseamos incluir en el módulo
<param name="id_evento" type="text" default="1" label="Id del Evento" description="Muestra la información del
evento" > </param>
13www.joomlagt.org
Helper.php
<?phpdefined('_JEXEC') or die('Restricted access'); class modEventosHelper{ function getDisponibilidad( $params ) {
$db =& JFactory::getDBO();$paramid_evento = $params->get('id_evento');$query ='SELECT #__eventos.disponibilidad, #__eventos.nombre, #__eventos.disponibilidad - count(#__eventos_participantes.evento_id ) as restantes, count(#__eventos_participantes.evento_id ) as participantes_inscritos, #__eventos.descripcion_breve,#__eventos.fecha, #__eventos.hora_inicio, #__eventos.hora_fin, #__eventos.lugarFROM #__eventos left join #__eventos_participantes ON #__eventos.id = #__eventos_participantes.evento_id
WHERE #__eventos.id='.$paramid_evento ;$db->setQuery($query);$eventos = $db->loadObjectList();return $eventos;
}}?>
Abril 2011
14www.joomlagt.org
Helper.php$paramid_evento = $params->get('id_evento');
Abril 2011
Para leer los parámetros del Módulo
15www.joomlagt.org
Helper.php
$db =& JFactory::getDBO();
$query = “Select …. ”;
$db->setQuery($query);$eventos = $db->loadObjectList();
Abril 2011
Interacción con DB
16www.joomlagt.org
Default.php
<?php // no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); ?><?php $sufijo = $params->get('class_sfx'); ?>
<div class="Eventos<?php echo $sufijo; ?>"> <?php foreach($eventos as $eventos) : ?><?php if ($params->get('text_before')) {
$restantes = $eventos->restantes;$total_disponible = $eventos->disponibilidad;$fecha = $eventos->fecha;$nombre = $eventos->nombre;$lugar = $eventos->lugar;$text_before= $params->get('text_before');echo '<div class="text_before'.$sufijo.'">';$restantes = str_replace("%restantes%", $restantes, $text_before);if ($params->get('mostrar_total')) {$restantes = str_replace("%total_disponible%", " de ". $total_disponible, $restantes);}if ($params->get('mostrar_nombre')) {
$restantes = str_replace("%Nombre%", " Nombre: ". $nombre."</br>", $restantes);} else
$restantes = str_replace("%Nombre%", " ", $restantes);if ($params->get('mostrar_fecha')) {
$restantes = str_replace("%Fecha%", " Fecha: ". $fecha."</br>", $restantes);} else
$restantes = str_replace("%Fecha%", " ", $restantes);if ($params->get('mostrar_lugar')) {
$restantes = str_replace("%Lugar%", " Lugar: ". $lugar."</br>", $restantes);} else
$restantes = str_replace("%Lugar%", " ", $restantes);echo $restantes; echo "</div>";} ?>
<?php endforeach; ?> </div>
Abril 2011
17www.joomlagt.org
Default.php
<?php $sufijo = $params->get('class_sfx'); ?>
<div class="Eventos<?php echo $sufijo; ?>"> </div>
Con estas líneas yo puedo agregar una clase css personalizada al módulo, permitiendo que pueda tener varias copias del mismo módulo
Abril 2011
18www.joomlagt.org
Default.php
<?php foreach($eventos as $eventos) : ?>$restantes = $eventos->restantes;$total_disponible = $eventos->disponibilidad;$fecha = $eventos->fecha;$nombre = $eventos->nombre;$lugar = $eventos->lugar;<?php endforeach; ?>
</div>
Con estas líneas tengo acceso al resultado de la consulta realizada en el helper.php
Abril 2011