crear modulos
DESCRIPTION
Crear módulos en Joomla!, por Leonel CantónPresentación 2 de Abril de 2011, Taller Joomla! para Universidad GalileoTRANSCRIPT
![Page 1: Crear modulos](https://reader036.vdocuments.us/reader036/viewer/2022083001/557b2766d8b42a71798b508d/html5/thumbnails/1.jpg)
Módulos en Joomla!
Leonel Cantón @leonelcanton
![Page 2: Crear modulos](https://reader036.vdocuments.us/reader036/viewer/2022083001/557b2766d8b42a71798b508d/html5/thumbnails/2.jpg)
2www.joomlagt.org
Estructura de Archivos
Por estandarización todos los módulos deben tener por lo menos estos archivos
Abril 2011
![Page 3: Crear modulos](https://reader036.vdocuments.us/reader036/viewer/2022083001/557b2766d8b42a71798b508d/html5/thumbnails/3.jpg)
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
![Page 4: Crear modulos](https://reader036.vdocuments.us/reader036/viewer/2022083001/557b2766d8b42a71798b508d/html5/thumbnails/4.jpg)
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
![Page 5: Crear modulos](https://reader036.vdocuments.us/reader036/viewer/2022083001/557b2766d8b42a71798b508d/html5/thumbnails/5.jpg)
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
![Page 6: Crear modulos](https://reader036.vdocuments.us/reader036/viewer/2022083001/557b2766d8b42a71798b508d/html5/thumbnails/6.jpg)
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
![Page 7: Crear modulos](https://reader036.vdocuments.us/reader036/viewer/2022083001/557b2766d8b42a71798b508d/html5/thumbnails/7.jpg)
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
![Page 8: Crear modulos](https://reader036.vdocuments.us/reader036/viewer/2022083001/557b2766d8b42a71798b508d/html5/thumbnails/8.jpg)
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
![Page 9: Crear modulos](https://reader036.vdocuments.us/reader036/viewer/2022083001/557b2766d8b42a71798b508d/html5/thumbnails/9.jpg)
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>
![Page 10: Crear modulos](https://reader036.vdocuments.us/reader036/viewer/2022083001/557b2766d8b42a71798b508d/html5/thumbnails/10.jpg)
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>
![Page 11: Crear modulos](https://reader036.vdocuments.us/reader036/viewer/2022083001/557b2766d8b42a71798b508d/html5/thumbnails/11.jpg)
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>
![Page 12: Crear modulos](https://reader036.vdocuments.us/reader036/viewer/2022083001/557b2766d8b42a71798b508d/html5/thumbnails/12.jpg)
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>
![Page 13: Crear modulos](https://reader036.vdocuments.us/reader036/viewer/2022083001/557b2766d8b42a71798b508d/html5/thumbnails/13.jpg)
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
![Page 14: Crear modulos](https://reader036.vdocuments.us/reader036/viewer/2022083001/557b2766d8b42a71798b508d/html5/thumbnails/14.jpg)
14www.joomlagt.org
Helper.php$paramid_evento = $params->get('id_evento');
Abril 2011
Para leer los parámetros del Módulo
![Page 15: Crear modulos](https://reader036.vdocuments.us/reader036/viewer/2022083001/557b2766d8b42a71798b508d/html5/thumbnails/15.jpg)
15www.joomlagt.org
Helper.php
$db =& JFactory::getDBO();
$query = “Select …. ”;
$db->setQuery($query);$eventos = $db->loadObjectList();
Abril 2011
Interacción con DB
![Page 16: Crear modulos](https://reader036.vdocuments.us/reader036/viewer/2022083001/557b2766d8b42a71798b508d/html5/thumbnails/16.jpg)
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
![Page 17: Crear modulos](https://reader036.vdocuments.us/reader036/viewer/2022083001/557b2766d8b42a71798b508d/html5/thumbnails/17.jpg)
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
![Page 18: Crear modulos](https://reader036.vdocuments.us/reader036/viewer/2022083001/557b2766d8b42a71798b508d/html5/thumbnails/18.jpg)
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