crear modulos

18
Módulos en Joomla! Leonel Cantón @leonelcanton

Upload: grupo-de-usuarios-de-joomla-guatemala

Post on 13-Jun-2015

559 views

Category:

Technology


3 download

DESCRIPTION

Crear módulos en Joomla!, por Leonel CantónPresentación 2 de Abril de 2011, Taller Joomla! para Universidad Galileo

TRANSCRIPT

Page 1: Crear modulos

Módulos en Joomla!

Leonel Cantón @leonelcanton

Page 2: Crear modulos

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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