SlideShare una empresa de Scribd logo
1 de 18
Módulos en Joomla! Leonel Cantón @leonelcanton
Estructura de Archivos Por estandarización todos los módulos deben tener por lo menos estos archivos Abril 2011 2
mod_NombreModulo.php <?php /**  * Modulo de disponibiliad de eventos - joomlagt.prg  *   * @license        GNU/GPL, see LICENSE.php  * mod_eventosis free software. Thisversionmayhavebeenmodifiedpursuant  * tothe GNU General PublicLicense, and as distributeditincludesor  * isderivative of workslicensedunderthe GNU General PublicLicenseor  * other free or open source software licenses.  */ // no acceso directo defined( '_JEXEC' ) or die( 'Restrictedaccess' ); // incluir al helper que devolverá los datos, solo una vez require_once( dirname(__FILE__).DS.'helper.php' ); $eventos = modEventosHelper::getDisponibilidad( $params ); require( JModuleHelper::getLayoutPath( 'mod_eventos','default') ); ?> Abril 2011 3
mod_NombreModulo.php defined( '_JEXEC' ) or die( 'Restrictedaccess' ); Abril 2011 4 ,[object Object]
Todos los archivos en Joomla! deberían iniciar con esta instrucción,[object Object]
Recordar que Joomla! utiliza MVC,[object Object]
La variable $eventos puede ser consultada del el template del módulo,[object Object],[object Object]
mod_NombreModulo.xml Datos Generales del Módulo Estos datos se ven reflejados en el administrador Al instalar Al configurar Al eliminar Abril 2011 9 <?xmlversion="1.0" encoding="utf-8"?> <installtype="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>lcanton@joomlagt.org</authorEmail>
mod_NombreModulo.xml <files>……</files> Abril 2011 10 Aquí se incluyen todos los archivos incluidos en el módulo <files> <filename>mod_eventos.xml</filename> 	<filenamemodule="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>
mod_NombreModulo.xml <languages>……</languages> Abril 2011 11 Aquí se incluyen todos los archivos de idioma que incluidos en el módulo <languages> <!-- Anylanguage files includedwiththe module --> <languagetag="es-ES">es-ES.mod_eventos.ini</language> <languagetag="en-GB">en-GB.mod_eventos.ini</language> </languages>
mod_NombreModulo.xml <params>……</params> Abril 2011 12 Aquí se incluyen todos los parámetros que deseamos incluir en el módulo   <paramname="id_evento"  type="text"   default="1"  label="Id del Evento"  description="Muestra la información del evento" > </param>
Helper.php <?php defined('_JEXEC') or die('Restrictedaccess'); classmodEventosHelper { functiongetDisponibilidad( $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.lugar FROM #__eventos leftjoin #__eventos_participantes ON #__eventos.id = #__eventos_participantes.evento_id        WHERE #__eventos.id='.$paramid_evento ; $db->setQuery($query); $eventos = $db->loadObjectList(); return$eventos; } } ?> Abril 2011 13
Helper.php $paramid_evento = $params->get('id_evento'); Abril 2011 14 Para leer los parámetros del Módulo
Helper.php $db =& JFactory::getDBO(); $query= “Select …. ”; $db->setQuery($query); $eventos = $db->loadObjectList(); Abril 2011 15 Interacción con DB
Default.php <?php // no directaccessdefined( '_JEXEC' ) or die( 'Restrictedaccess' ); ?> <?php $sufijo = $params->get('class_sfx'); ?> <divclass="Eventos<?php echo $sufijo; ?>">  <?phpforeach($eventos as $eventos) :  ?> <?phpif ($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 '<divclass="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>";} ?> <?phpendforeach; ?>  </div> Abril 2011 16
Default.php <?php $sufijo = $params->get('class_sfx'); ?> <divclass="Eventos<?php echo $sufijo; ?>">   </div> Con estas líneas yo puedo agregar una clase csspersonalizada al módulo, permitiendo que pueda tener varias copias del mismo módulo Abril 2011 17
Default.php <?phpforeach($eventos as $eventos) :  ?> 	$restantes = $eventos->restantes; $total_disponible = $eventos->disponibilidad; $fecha = $eventos->fecha; $nombre = $eventos->nombre; $lugar = $eventos->lugar; <?phpendforeach; ?>  </div> Con estas líneas tengo acceso al resultado de la consulta realizada en el helper.php Abril 2011 18
Crear modulos

Más contenido relacionado

La actualidad más candente

Curso AngularJS - 3. módulos y controladores
Curso AngularJS - 3. módulos y controladoresCurso AngularJS - 3. módulos y controladores
Curso AngularJS - 3. módulos y controladoresÁlvaro Alonso González
 
Práctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptPráctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptjubacalo
 
Evidencia: Sesión Virtual Funciones PHP
Evidencia: Sesión Virtual Funciones PHPEvidencia: Sesión Virtual Funciones PHP
Evidencia: Sesión Virtual Funciones PHPSebastián Joya
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcatjubacalo
 
Jose manuel avila gonzález
Jose manuel avila gonzálezJose manuel avila gonzález
Jose manuel avila gonzálezJose Avila
 
Jose manuel avila gonzález
Jose manuel avila gonzálezJose manuel avila gonzález
Jose manuel avila gonzálezJose Avila
 
Evidencia sesión virtual “funciones php”
Evidencia sesión virtual “funciones php”Evidencia sesión virtual “funciones php”
Evidencia sesión virtual “funciones php”JOANSAGO
 
Wp config.php
Wp config.phpWp config.php
Wp config.phpgregozz
 
Joomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesJoomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesdeivit86
 
PresentacióN 4
PresentacióN 4PresentacióN 4
PresentacióN 4pokerpc
 
Curso de Desarrollo Web
Curso de Desarrollo WebCurso de Desarrollo Web
Curso de Desarrollo Webjuliocombativo
 

La actualidad más candente (15)

Curso AngularJS - 3. módulos y controladores
Curso AngularJS - 3. módulos y controladoresCurso AngularJS - 3. módulos y controladores
Curso AngularJS - 3. módulos y controladores
 
Práctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptPráctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScript
 
Evidencia: Sesión Virtual Funciones PHP
Evidencia: Sesión Virtual Funciones PHPEvidencia: Sesión Virtual Funciones PHP
Evidencia: Sesión Virtual Funciones PHP
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcat
 
Jsf
JsfJsf
Jsf
 
Jose manuel avila gonzález
Jose manuel avila gonzálezJose manuel avila gonzález
Jose manuel avila gonzález
 
Jose manuel avila gonzález
Jose manuel avila gonzálezJose manuel avila gonzález
Jose manuel avila gonzález
 
Evidencia sesión virtual “funciones php”
Evidencia sesión virtual “funciones php”Evidencia sesión virtual “funciones php”
Evidencia sesión virtual “funciones php”
 
Wp config.php
Wp config.phpWp config.php
Wp config.php
 
Joomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensionesJoomladay 2008 Madrid - desarrollo de extensiones
Joomladay 2008 Madrid - desarrollo de extensiones
 
Php1
Php1Php1
Php1
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
PresentacióN 4
PresentacióN 4PresentacióN 4
PresentacióN 4
 
Introducción a TDD y PHPUnit
Introducción a TDD y PHPUnitIntroducción a TDD y PHPUnit
Introducción a TDD y PHPUnit
 
Curso de Desarrollo Web
Curso de Desarrollo WebCurso de Desarrollo Web
Curso de Desarrollo Web
 

Destacado

Introduccción a la programación en Joomla!
Introduccción a la programación en Joomla!Introduccción a la programación en Joomla!
Introduccción a la programación en Joomla!Roberto Segura
 
Introducción a la programación para joomla
Introducción a la programación para joomlaIntroducción a la programación para joomla
Introducción a la programación para joomlaRoberto Segura
 
Taller de introducción a Fabrik
Taller de introducción a FabrikTaller de introducción a Fabrik
Taller de introducción a Fabrikjachavesnaranjo
 
MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!SergioIglesiasNET
 
Manual Google Adwords 2017. Intruduccion
Manual Google Adwords 2017. IntruduccionManual Google Adwords 2017. Intruduccion
Manual Google Adwords 2017. IntruduccionUnai Benito
 
Tutorial de MailChimp en español · Guía completa Ⓡ
Tutorial de MailChimp en español · Guía completa ⓇTutorial de MailChimp en español · Guía completa Ⓡ
Tutorial de MailChimp en español · Guía completa ⓇRubén Alonso
 
10 trucos para no tirar el dinero en Google AdWords. 2018 Manual Google Adwo...
10 trucos para no tirar el dinero en Google AdWords. 2018  Manual Google Adwo...10 trucos para no tirar el dinero en Google AdWords. 2018  Manual Google Adwo...
10 trucos para no tirar el dinero en Google AdWords. 2018 Manual Google Adwo...Unai Benito
 
Examen Conceptos Básicos Google Ads. Respuestas Google Ads 2021
Examen Conceptos Básicos Google Ads. Respuestas Google Ads 2021 Examen Conceptos Básicos Google Ads. Respuestas Google Ads 2021
Examen Conceptos Básicos Google Ads. Respuestas Google Ads 2021 Abraham Morales Ruiz
 

Destacado (10)

Introduccción a la programación en Joomla!
Introduccción a la programación en Joomla!Introduccción a la programación en Joomla!
Introduccción a la programación en Joomla!
 
Api joomla!.key
Api joomla!.keyApi joomla!.key
Api joomla!.key
 
Creando plantillas responsive para Joomla, por David Hurley
Creando plantillas responsive para Joomla, por David HurleyCreando plantillas responsive para Joomla, por David Hurley
Creando plantillas responsive para Joomla, por David Hurley
 
Introducción a la programación para joomla
Introducción a la programación para joomlaIntroducción a la programación para joomla
Introducción a la programación para joomla
 
Taller de introducción a Fabrik
Taller de introducción a FabrikTaller de introducción a Fabrik
Taller de introducción a Fabrik
 
MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!
 
Manual Google Adwords 2017. Intruduccion
Manual Google Adwords 2017. IntruduccionManual Google Adwords 2017. Intruduccion
Manual Google Adwords 2017. Intruduccion
 
Tutorial de MailChimp en español · Guía completa Ⓡ
Tutorial de MailChimp en español · Guía completa ⓇTutorial de MailChimp en español · Guía completa Ⓡ
Tutorial de MailChimp en español · Guía completa Ⓡ
 
10 trucos para no tirar el dinero en Google AdWords. 2018 Manual Google Adwo...
10 trucos para no tirar el dinero en Google AdWords. 2018  Manual Google Adwo...10 trucos para no tirar el dinero en Google AdWords. 2018  Manual Google Adwo...
10 trucos para no tirar el dinero en Google AdWords. 2018 Manual Google Adwo...
 
Examen Conceptos Básicos Google Ads. Respuestas Google Ads 2021
Examen Conceptos Básicos Google Ads. Respuestas Google Ads 2021 Examen Conceptos Básicos Google Ads. Respuestas Google Ads 2021
Examen Conceptos Básicos Google Ads. Respuestas Google Ads 2021
 

Similar a Crear modulos

Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Raul Fraile
 
Crear Plugin de WordPress desde Cero
Crear Plugin de WordPress desde CeroCrear Plugin de WordPress desde Cero
Crear Plugin de WordPress desde CeroEduardo Turiño
 
Android Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG UruguayAndroid Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG Uruguaygtuguruguay
 
tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.comoctabio
 
Web matrix y j querymobile
Web matrix y j querymobileWeb matrix y j querymobile
Web matrix y j querymobileGonzalo C.
 
Asegúr@IT II - Seguridad en Web
Asegúr@IT II - Seguridad en WebAsegúr@IT II - Seguridad en Web
Asegúr@IT II - Seguridad en WebChema Alonso
 
Construcción de Frameworks a partir de Smarty y PEAR
Construcción de Frameworks a partir de Smarty y PEARConstrucción de Frameworks a partir de Smarty y PEAR
Construcción de Frameworks a partir de Smarty y PEARMarcos Martinez
 
Introducción a ASP.NET
Introducción a ASP.NETIntroducción a ASP.NET
Introducción a ASP.NETpabloesp
 
Tutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigTutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigMarcos Labad
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2Mario IC
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryJavier P.
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryJavier P.
 
Sesiones en-php1536
Sesiones en-php1536Sesiones en-php1536
Sesiones en-php1536xib32
 

Similar a Crear modulos (20)

Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5
 
Crear Plugin de WordPress desde Cero
Crear Plugin de WordPress desde CeroCrear Plugin de WordPress desde Cero
Crear Plugin de WordPress desde Cero
 
Android Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG UruguayAndroid Bootcamp - GTUG Uruguay
Android Bootcamp - GTUG Uruguay
 
tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.com
 
Web matrix y j querymobile
Web matrix y j querymobileWeb matrix y j querymobile
Web matrix y j querymobile
 
Introduccion Struts2
Introduccion Struts2Introduccion Struts2
Introduccion Struts2
 
PHP
PHPPHP
PHP
 
Encuentro Linux 2011
Encuentro Linux 2011Encuentro Linux 2011
Encuentro Linux 2011
 
Introducción a Flask
Introducción a FlaskIntroducción a Flask
Introducción a Flask
 
Asegúr@IT II - Seguridad en Web
Asegúr@IT II - Seguridad en WebAsegúr@IT II - Seguridad en Web
Asegúr@IT II - Seguridad en Web
 
Especialista Web J9 Php
Especialista Web J9  PhpEspecialista Web J9  Php
Especialista Web J9 Php
 
Construcción de Frameworks a partir de Smarty y PEAR
Construcción de Frameworks a partir de Smarty y PEARConstrucción de Frameworks a partir de Smarty y PEAR
Construcción de Frameworks a partir de Smarty y PEAR
 
Introducción a ASP.NET
Introducción a ASP.NETIntroducción a ASP.NET
Introducción a ASP.NET
 
Tutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigTutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. Twig
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
 
Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
Desarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQueryDesarrollando aplicaciones web usando Catalyst y jQuery
Desarrollando aplicaciones web usando Catalyst y jQuery
 
Step by step developing with Facebook PHP API by Bruno Kamiche
Step by step developing  with Facebook PHP API by Bruno KamicheStep by step developing  with Facebook PHP API by Bruno Kamiche
Step by step developing with Facebook PHP API by Bruno Kamiche
 
Sesiones en-php1536
Sesiones en-php1536Sesiones en-php1536
Sesiones en-php1536
 
Sesiones en Php
Sesiones en  PhpSesiones en  Php
Sesiones en Php
 

Más de Grupo de Usuarios de Joomla! Guatemala

Joomla + Azure: Interoperabilidad y Escalabilidad en tus manos, por Víctor Ca...
Joomla + Azure: Interoperabilidad y Escalabilidad en tus manos, por Víctor Ca...Joomla + Azure: Interoperabilidad y Escalabilidad en tus manos, por Víctor Ca...
Joomla + Azure: Interoperabilidad y Escalabilidad en tus manos, por Víctor Ca...Grupo de Usuarios de Joomla! Guatemala
 

Más de Grupo de Usuarios de Joomla! Guatemala (19)

Overrides intecap-leo canton
Overrides intecap-leo cantonOverrides intecap-leo canton
Overrides intecap-leo canton
 
Sitios web responsive con Joomla!
Sitios web responsive con Joomla!Sitios web responsive con Joomla!
Sitios web responsive con Joomla!
 
Sitios Multi Idiomas, por Leonel Cantón
Sitios Multi Idiomas, por Leonel CantónSitios Multi Idiomas, por Leonel Cantón
Sitios Multi Idiomas, por Leonel Cantón
 
Joomla Platform, por David Hurley
Joomla Platform, por David HurleyJoomla Platform, por David Hurley
Joomla Platform, por David Hurley
 
Joomla + Azure: Interoperabilidad y Escalabilidad en tus manos, por Víctor Ca...
Joomla + Azure: Interoperabilidad y Escalabilidad en tus manos, por Víctor Ca...Joomla + Azure: Interoperabilidad y Escalabilidad en tus manos, por Víctor Ca...
Joomla + Azure: Interoperabilidad y Escalabilidad en tus manos, por Víctor Ca...
 
Creando un mundo mejor con Joomla, por Paul Orwig
Creando un mundo mejor con Joomla, por Paul OrwigCreando un mundo mejor con Joomla, por Paul Orwig
Creando un mundo mejor con Joomla, por Paul Orwig
 
SEO en Joomla
SEO en JoomlaSEO en Joomla
SEO en Joomla
 
Frameworks para Plantillas, por Tito Alvarez
Frameworks para Plantillas, por Tito AlvarezFrameworks para Plantillas, por Tito Alvarez
Frameworks para Plantillas, por Tito Alvarez
 
Responsive Web Design, por Víctor López
Responsive Web Design, por Víctor LópezResponsive Web Design, por Víctor López
Responsive Web Design, por Víctor López
 
Un recorrido por Joomla 3
Un recorrido por Joomla 3Un recorrido por Joomla 3
Un recorrido por Joomla 3
 
Introducción a Joomla, por Gretel Gutiérrez
Introducción a Joomla, por Gretel GutiérrezIntroducción a Joomla, por Gretel Gutiérrez
Introducción a Joomla, por Gretel Gutiérrez
 
Conferencia Inicial del Joomla Day Guatemala 2013. Paul Orwig
Conferencia Inicial del Joomla Day Guatemala 2013.  Paul OrwigConferencia Inicial del Joomla Day Guatemala 2013.  Paul Orwig
Conferencia Inicial del Joomla Day Guatemala 2013. Paul Orwig
 
Joomla! sitio web en 30 minutos (Flisol GT 2011)
Joomla! sitio web en 30 minutos (Flisol GT 2011)Joomla! sitio web en 30 minutos (Flisol GT 2011)
Joomla! sitio web en 30 minutos (Flisol GT 2011)
 
Diseñar en joomla!.key
Diseñar en joomla!.keyDiseñar en joomla!.key
Diseñar en joomla!.key
 
Qué es joomla
Qué es joomlaQué es joomla
Qué es joomla
 
Template overrides
Template overridesTemplate overrides
Template overrides
 
Qué más podemos hacer admin joomla
Qué más podemos hacer  admin joomlaQué más podemos hacer  admin joomla
Qué más podemos hacer admin joomla
 
Estructura básicas de plantillas en joomla!
Estructura básicas de plantillas en joomla!Estructura básicas de plantillas en joomla!
Estructura básicas de plantillas en joomla!
 
Proceso de diseño
Proceso de diseñoProceso de diseño
Proceso de diseño
 

Último

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 

Último (11)

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 

Crear modulos

  • 1. Módulos en Joomla! Leonel Cantón @leonelcanton
  • 2. Estructura de Archivos Por estandarización todos los módulos deben tener por lo menos estos archivos Abril 2011 2
  • 3. mod_NombreModulo.php <?php /** * Modulo de disponibiliad de eventos - joomlagt.prg * * @license GNU/GPL, see LICENSE.php * mod_eventosis free software. Thisversionmayhavebeenmodifiedpursuant * tothe GNU General PublicLicense, and as distributeditincludesor * isderivative of workslicensedunderthe GNU General PublicLicenseor * other free or open source software licenses. */ // no acceso directo defined( '_JEXEC' ) or die( 'Restrictedaccess' ); // incluir al helper que devolverá los datos, solo una vez require_once( dirname(__FILE__).DS.'helper.php' ); $eventos = modEventosHelper::getDisponibilidad( $params ); require( JModuleHelper::getLayoutPath( 'mod_eventos','default') ); ?> Abril 2011 3
  • 4.
  • 5.
  • 6.
  • 7.
  • 8. mod_NombreModulo.xml Datos Generales del Módulo Estos datos se ven reflejados en el administrador Al instalar Al configurar Al eliminar Abril 2011 9 <?xmlversion="1.0" encoding="utf-8"?> <installtype="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>lcanton@joomlagt.org</authorEmail>
  • 9. mod_NombreModulo.xml <files>……</files> Abril 2011 10 Aquí se incluyen todos los archivos incluidos en el módulo <files> <filename>mod_eventos.xml</filename> <filenamemodule="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>
  • 10. mod_NombreModulo.xml <languages>……</languages> Abril 2011 11 Aquí se incluyen todos los archivos de idioma que incluidos en el módulo <languages> <!-- Anylanguage files includedwiththe module --> <languagetag="es-ES">es-ES.mod_eventos.ini</language> <languagetag="en-GB">en-GB.mod_eventos.ini</language> </languages>
  • 11. mod_NombreModulo.xml <params>……</params> Abril 2011 12 Aquí se incluyen todos los parámetros que deseamos incluir en el módulo <paramname="id_evento" type="text" default="1" label="Id del Evento" description="Muestra la información del evento" > </param>
  • 12. Helper.php <?php defined('_JEXEC') or die('Restrictedaccess'); classmodEventosHelper { functiongetDisponibilidad( $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.lugar FROM #__eventos leftjoin #__eventos_participantes ON #__eventos.id = #__eventos_participantes.evento_id WHERE #__eventos.id='.$paramid_evento ; $db->setQuery($query); $eventos = $db->loadObjectList(); return$eventos; } } ?> Abril 2011 13
  • 13. Helper.php $paramid_evento = $params->get('id_evento'); Abril 2011 14 Para leer los parámetros del Módulo
  • 14. Helper.php $db =& JFactory::getDBO(); $query= “Select …. ”; $db->setQuery($query); $eventos = $db->loadObjectList(); Abril 2011 15 Interacción con DB
  • 15. Default.php <?php // no directaccessdefined( '_JEXEC' ) or die( 'Restrictedaccess' ); ?> <?php $sufijo = $params->get('class_sfx'); ?> <divclass="Eventos<?php echo $sufijo; ?>"> <?phpforeach($eventos as $eventos) : ?> <?phpif ($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 '<divclass="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>";} ?> <?phpendforeach; ?> </div> Abril 2011 16
  • 16. Default.php <?php $sufijo = $params->get('class_sfx'); ?> <divclass="Eventos<?php echo $sufijo; ?>"> </div> Con estas líneas yo puedo agregar una clase csspersonalizada al módulo, permitiendo que pueda tener varias copias del mismo módulo Abril 2011 17
  • 17. Default.php <?phpforeach($eventos as $eventos) : ?> $restantes = $eventos->restantes; $total_disponible = $eventos->disponibilidad; $fecha = $eventos->fecha; $nombre = $eventos->nombre; $lugar = $eventos->lugar; <?phpendforeach; ?> </div> Con estas líneas tengo acceso al resultado de la consulta realizada en el helper.php Abril 2011 18