SlideShare una empresa de Scribd logo
1 de 44
Por David Noguera Cifuentes JoomlaDay 2008, Madrid Desarrollo de extensiones con Joomla! 1.5
[object Object],[object Object],[object Object],[object Object],Índice
Introducción ,[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],1. Desarrollo de módulos
Estructura de un módulo:
- mod_Prueba.php  : fichero php con el mismo nombre que el módulo, tomará en control del módulo cuando este sea llamado  - helper.php  : clase helper , sirve para separar la lógica de la presentación. - directorio tmpl : aquí guardaremos las plantillas que usaremos para la presentación -Por defecto, se usa el template default.php - mod_prueba.xml  : fichero xml necesario para generar un instalable y donde especificaremos los parametros del módulo.
¿Qué va a hacer nuestro módulo? ,[object Object],[object Object]
Código del punto de entrada mod_prueba.php <?php   // no permitir acceso directo defined ( ‘_JEXEC’ ) or  die ( ‘Restricted access’ );   // incluir al helper que devolverá los datos, solo una vez require_once(  dirname (__FILE__).DS.‘helper.php’ );   $mensaje = modPruebaHelper::getMensaje( $params ); require( JModuleHelper::getLayoutPath( ‘mod_prueba’,‘default’) ); ?>
Código del helper: <?php class  modPruebaHelper {      function  getMensaje( $params )      {                   return  “Hola Mundo”;      } } ?> La clase helper ha de llamarse con el nombre del modulo sin “_” seguido de helper: Nombre del módulo sin “_” + Helper
Código del template: default.php <?php echo $mensaje; ?>
Fichero XML del módulo <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <install type=&quot;module&quot; version=&quot;1.5.0&quot;>      <name>Prueba</name>      <author>David Noguera</author>      <version>1.0</version>      <creationDate>02-04-2008</creationDate>      <description>Modulo que muestra un mensaje de Hola Mundo</description>      <authorEmail>david@nosolocodigo.com</authorEmail>      <files>      <filename module=&quot;mod_prueba&quot;>mod_prueba.php</filename>          <filename>helper.php</filename>          <filename>mod_prueba.xml</filename>          <filename>tmpl/default.php</filename>      </files> </install>
Resultado final
2. Desarrollo de un componente MVC ,[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object]
Convections over configuration ,[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object]
Convenciones del framework MVC de Joomla! ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
 
Comenzamos con el desarrollo..
Punto de Entrada <?php  defined ( ‘_JEXEC’ ) or  die ( ‘Restricted access’ );   require_once( JPATH_COMPONENT.DS.‘controller.php’ );   if($controller = JRequest::getWord(‘controller’)) {      $path = JPATH_COMPONENT.DS.‘controllers’.DS.$controller.‘.php’;      if ( file_exists ($path)) {          require_once $path;      } else {          $controller = “”;      } }   $classname    = ‘PruebaController’.$controller; $controller   = new $classname( ); $controller->execute( JRequest::getVar( ‘task’ ) );   $controller->redirect(); ?>
Funcionamiento del punto de entrada ,[object Object],[object Object],[object Object],[object Object]
Controlador <?php      defined ( ‘_JEXEC’ ) or  die ( ‘Restricted access’ );         jimport(’joomla.application.component.controller’);        class PruebaController extends JController      {          function display()        {              parent::display();        }      }      ?>
com_prueba/views/prueba/view.html.php <?php      defined ( ‘_JEXEC’ ) or  die ( ‘Restricted access’ );      jimport( ‘joomla.application.component.view’);      class PruebaViewPrueba extends JView      {      function display($tpl = null)    {       $model =& $this->getModel();        $mensaje= $model->getMensaje()        $this->assignRef( ‘mensaje’, $mensaje );          parent::display($tpl);        }        }      ?>
com_prueba/views/prueba/tmpl/default.php <h1><?php  echo  $this->mensaje ?></h1>
Modelo <?php   defined (’_JEXEC’) or  die (); jimport( ‘joomla.application.component.model’ );   class PruebaModelPrueba extends JModel {     function getMensaje(){          //Aquí se obtienen datos de la BD          return “Hola soy un valor que ha devuelto el modelo”;       } } ?>
Fichero XML del componente <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <!DOCTYPE install SYSTEM &quot;http://dev.joomla.org/xml/1.5/component- install.dtd&quot;> <install type=&quot;component&quot; version=&quot;1.5&quot;> <name>My Extension</name> <creationDate>MonthName Year</creationDate> <author>Author's Name</author> <authorEmail>Author's Email</authorEmail> <authorUrl>Author's Website</authorUrl> <copyright>Copyright Notice</copyright> <license>Component License Agreement</license> <version>Component Version</version> <description>Component Description</description>
<administration> <menu>My Extension</menu> <submenu> <menu task=&quot;view&quot;>Items</menu> <menu link=&quot;option=com_categories&section=com_wfaqs;&quot;>Categories</menu> </submenu> <files folder=&quot;administration&quot;> <filename>index.html</filename> <filename>admin.myextension.php</filename> <filename>install.sql</filename> <filename>install.noutf8.sql</filename> <filename>uninstall.sql</filename> <folder>models</folder> <folder>views</folder> <folder>controllers</folder> <folder>tables</folder> </files>
<languages folder=&quot;administration&quot;> <language tag=&quot;en-GB&quot;>en-GB.com_myextension.ini</language> <language tag=&quot;de-DE&quot;>de-DE.com_myextension.ini</language> </languages> <media destination=&quot;com_myextension&quot;> <filename>logo.jpg</filename> <filename>index.html</filename> </media> </administration> <install> <sql> <file driver=&quot;mysql&quot; charset=&quot;utf8&quot;>install.sql</file> <file driver=&quot;mysql&quot; charset=&quot;&quot;>install.noutf8.sql</file> </sql> </install> <uninstall> <sql> <file driver=&quot;mysql&quot;>uninstall.sql</file> </sql> </uninstall>
<installfile>install.myextension.php</installfile> <uninstallfile>uninstall.myextension.php</uninstallfile> <files> <filename>index.html</filename> <filename>myextension.php</filename> <folder>models</folder> <folder>views</folder> <folder>controllers</folder> <folder>tables</folder> </files> <languages> <language tag=&quot;en-GB&quot;>en-GB.com_myextension.ini</language> <language tag=&quot;de-DE&quot;>de-DE.com_myextension.ini</language> </languages> <media destination=&quot;com_myextension&quot;> <filename>logo.jpg</filename> <filename>index.html</filename> </media> </install>
Resultado Final URL: index.php?option=com_prueba&view=prueba
Investiga por tu cuenta!! ,[object Object]
3. Desarrollo de Plugins ,[object Object],[object Object],[object Object],[object Object]
Tipos de plugins ,[object Object],[object Object],[object Object],[object Object]
Ganchos ,[object Object],[object Object],[object Object],[object Object]
Desarrollo de un plugin ,[object Object],[object Object]
Estructura del plugin
Fichero XML del plugin
<?xml version=”1.0″ encoding=”utf-8″ ?> <install version=”1.5″ type=”plugin” group=”content”> <name>Content - Prueba</name> <author>David Noguera</author> <creationDate>15-02-2008</creationDate> <authorEmail>david@nosolocodigo.com</authorEmail> <authorUrl>www.nosolocodigo.com</authorUrl> <version>1.0</version> <description>Muestra un mensaje antes de mostrar el contenido</description> <files> <filename plugin=”Prueba”>Prueba.php</filename> <filename>Prueba.xml</filename> </files> </install>
Fichero holaMundo.php <?php defined ( ‘_JEXEC’ ) or  die ( ‘Acceso Restringido’ ); jimport( ‘joomla.plugin.plugin’ );   //  Convención : Nombre de la clase (plg + tipo plugin + nombre del plugin) class plgContentPrueba extends JPlugin {   function plgContentPrueba( &$subject ) {      parent::__construct( $subject ); }   function onBeforeDisplayContent(&$article, &$params, $limitstart=0) {        $salidaPantalla = ‘<h2>Hola Mundo</h2>’;      return $salidaPantalla;      } } ?>
Resultado final
Fin de la presentación

Más contenido relacionado

La actualidad más candente

Guia html2
Guia html2Guia html2
Guia html2ljds
 
Iniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQLIniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQLRightster
 
Guia practica secuenciales eclipse java 01
Guia practica secuenciales eclipse java 01Guia practica secuenciales eclipse java 01
Guia practica secuenciales eclipse java 01Emerson Garay
 
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...Pablo Godel
 
Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006Samuel Marrero
 
Exposicion Akelos
Exposicion AkelosExposicion Akelos
Exposicion Akelosdokeosla
 
2. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-20062. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-2006Samuel Marrero
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Facescok12v
 
Presentación extensiones interesantes joomla
Presentación extensiones interesantes joomlaPresentación extensiones interesantes joomla
Presentación extensiones interesantes joomlaMadBlake
 
Guia practica condicionales en java con NetBeans 01
Guia practica condicionales en java con NetBeans 01Guia practica condicionales en java con NetBeans 01
Guia practica condicionales en java con NetBeans 01Emerson Garay
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletjubacalo
 
Guía de buenas prácticas para desarrolladores web
Guía de buenas prácticas para desarrolladores webGuía de buenas prácticas para desarrolladores web
Guía de buenas prácticas para desarrolladores webJuan Victor Minaya León
 
Diseño y validacion GUI con java usando Netbeans
Diseño y validacion GUI con java usando NetbeansDiseño y validacion GUI con java usando Netbeans
Diseño y validacion GUI con java usando NetbeansEmerson Garay
 
Usando Netbeans para desarrollos en PHP
Usando Netbeans para desarrollos en PHPUsando Netbeans para desarrollos en PHP
Usando Netbeans para desarrollos en PHPDKR Visión SRL
 
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...JaenFrankcezco
 
Guia BD conexión Mysql con Java usando Netbeans
Guia BD conexión Mysql con Java usando NetbeansGuia BD conexión Mysql con Java usando Netbeans
Guia BD conexión Mysql con Java usando NetbeansEmerson Garay
 

La actualidad más candente (20)

Guia html2
Guia html2Guia html2
Guia html2
 
Jsf
JsfJsf
Jsf
 
Iniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQLIniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQL
 
Guia practica secuenciales eclipse java 01
Guia practica secuenciales eclipse java 01Guia practica secuenciales eclipse java 01
Guia practica secuenciales eclipse java 01
 
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
 
Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006
 
Exposicion Akelos
Exposicion AkelosExposicion Akelos
Exposicion Akelos
 
2. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-20062. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-2006
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
Presentación extensiones interesantes joomla
Presentación extensiones interesantes joomlaPresentación extensiones interesantes joomla
Presentación extensiones interesantes joomla
 
Guia practica condicionales en java con NetBeans 01
Guia practica condicionales en java con NetBeans 01Guia practica condicionales en java con NetBeans 01
Guia practica condicionales en java con NetBeans 01
 
Magento Best Practices
Magento Best PracticesMagento Best Practices
Magento Best Practices
 
Semana 5 Angular Rutas y Controladores
Semana 5   Angular Rutas y ControladoresSemana 5   Angular Rutas y Controladores
Semana 5 Angular Rutas y Controladores
 
Acceso a BBDD mediante un servlet
Acceso a BBDD mediante un servletAcceso a BBDD mediante un servlet
Acceso a BBDD mediante un servlet
 
Guía de buenas prácticas para desarrolladores web
Guía de buenas prácticas para desarrolladores webGuía de buenas prácticas para desarrolladores web
Guía de buenas prácticas para desarrolladores web
 
Diseño y validacion GUI con java usando Netbeans
Diseño y validacion GUI con java usando NetbeansDiseño y validacion GUI con java usando Netbeans
Diseño y validacion GUI con java usando Netbeans
 
Desymfony 2011 - Twig
Desymfony 2011 - TwigDesymfony 2011 - Twig
Desymfony 2011 - Twig
 
Usando Netbeans para desarrollos en PHP
Usando Netbeans para desarrollos en PHPUsando Netbeans para desarrollos en PHP
Usando Netbeans para desarrollos en PHP
 
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
 
Guia BD conexión Mysql con Java usando Netbeans
Guia BD conexión Mysql con Java usando NetbeansGuia BD conexión Mysql con Java usando Netbeans
Guia BD conexión Mysql con Java usando Netbeans
 

Destacado

Krita - Tu tambien puedes pintar un arbol Feliz
Krita - Tu tambien puedes pintar un arbol FelizKrita - Tu tambien puedes pintar un arbol Feliz
Krita - Tu tambien puedes pintar un arbol FelizAlexandro Colorado
 
ChamiloCon Enseñando con Tecnología
ChamiloCon Enseñando con TecnologíaChamiloCon Enseñando con Tecnología
ChamiloCon Enseñando con TecnologíaAlexandro Colorado
 
Desarrollo extensiones en OpenOffice.org
Desarrollo extensiones en OpenOffice.orgDesarrollo extensiones en OpenOffice.org
Desarrollo extensiones en OpenOffice.orgAlexandro Colorado
 
ChamiloCon: Recursos de Software Libre
ChamiloCon: Recursos de Software Libre ChamiloCon: Recursos de Software Libre
ChamiloCon: Recursos de Software Libre Alexandro Colorado
 
Curso de desarrollo web para principiantes
Curso de desarrollo web para principiantesCurso de desarrollo web para principiantes
Curso de desarrollo web para principiantesAlexandro Colorado
 
Tipos de archivos y extensiones
Tipos de archivos y extensionesTipos de archivos y extensiones
Tipos de archivos y extensionesFlavia ruthmy
 
Bitcuners revolucion blockchain
Bitcuners revolucion blockchainBitcuners revolucion blockchain
Bitcuners revolucion blockchainAlexandro Colorado
 

Destacado (9)

Krita - Tu tambien puedes pintar un arbol Feliz
Krita - Tu tambien puedes pintar un arbol FelizKrita - Tu tambien puedes pintar un arbol Feliz
Krita - Tu tambien puedes pintar un arbol Feliz
 
ChamiloCon Enseñando con Tecnología
ChamiloCon Enseñando con TecnologíaChamiloCon Enseñando con Tecnología
ChamiloCon Enseñando con Tecnología
 
Desarrollo extensiones en OpenOffice.org
Desarrollo extensiones en OpenOffice.orgDesarrollo extensiones en OpenOffice.org
Desarrollo extensiones en OpenOffice.org
 
ChamiloCon: Recursos de Software Libre
ChamiloCon: Recursos de Software Libre ChamiloCon: Recursos de Software Libre
ChamiloCon: Recursos de Software Libre
 
Curso de desarrollo web para principiantes
Curso de desarrollo web para principiantesCurso de desarrollo web para principiantes
Curso de desarrollo web para principiantes
 
Bitcuners porque bitcoins
Bitcuners porque bitcoinsBitcuners porque bitcoins
Bitcuners porque bitcoins
 
Tipos de archivos y extensiones
Tipos de archivos y extensionesTipos de archivos y extensiones
Tipos de archivos y extensiones
 
Presentacion Krita
Presentacion KritaPresentacion Krita
Presentacion Krita
 
Bitcuners revolucion blockchain
Bitcuners revolucion blockchainBitcuners revolucion blockchain
Bitcuners revolucion blockchain
 

Similar a Joomladay 2008 Madrid - desarrollo de extensiones

Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2Mario IC
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPHP Vigo
 
Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Ricard Luquero
 
J!D Barcelona 2009 - Taller Plantillas Avanzado
J!D Barcelona 2009 - Taller Plantillas AvanzadoJ!D Barcelona 2009 - Taller Plantillas Avanzado
J!D Barcelona 2009 - Taller Plantillas AvanzadoSergioIglesiasNET
 
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!SergioIglesiasNET
 
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
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephpbetabeers
 
Extender Jquery para crear componentes web personalizados
Extender Jquery  para crear componentes web personalizadosExtender Jquery  para crear componentes web personalizados
Extender Jquery para crear componentes web personalizadosHéctor Curbelo Barrios
 
Tutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigTutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigMarcos Labad
 
Presentacion
PresentacionPresentacion
PresentacionEl Jota
 

Similar a Joomladay 2008 Madrid - desarrollo de extensiones (20)

Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigo
 
Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!
 
Programación de Componentes para Joomla (Gabriel Cuesta)
Programación de Componentes para Joomla (Gabriel Cuesta)Programación de Componentes para Joomla (Gabriel Cuesta)
Programación de Componentes para Joomla (Gabriel Cuesta)
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 
J!D Barcelona 2009 - Taller Plantillas Avanzado
J!D Barcelona 2009 - Taller Plantillas AvanzadoJ!D Barcelona 2009 - Taller Plantillas Avanzado
J!D Barcelona 2009 - Taller Plantillas Avanzado
 
Framework
FrameworkFramework
Framework
 
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
 
Crear Plugin de WordPress desde Cero
Crear Plugin de WordPress desde CeroCrear Plugin de WordPress desde Cero
Crear Plugin de WordPress desde Cero
 
Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3
 
Taller de zan php
Taller de zan phpTaller de zan php
Taller de zan php
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Crear modulos
Crear modulosCrear modulos
Crear modulos
 
Extender Jquery para crear componentes web personalizados
Extender Jquery  para crear componentes web personalizadosExtender Jquery  para crear componentes web personalizados
Extender Jquery para crear componentes web personalizados
 
Guia herramientas de bd
Guia herramientas de bdGuia herramientas de bd
Guia herramientas de bd
 
Tutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigTutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. Twig
 
JQuery Mvc
JQuery   MvcJQuery   Mvc
JQuery Mvc
 
Guia jQuery INCES Militar - Kurt Gude
Guia jQuery INCES Militar - Kurt GudeGuia jQuery INCES Militar - Kurt Gude
Guia jQuery INCES Militar - Kurt Gude
 
9.laravel
9.laravel9.laravel
9.laravel
 
Presentacion
PresentacionPresentacion
Presentacion
 

Último

Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 

Último (16)

Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 

Joomladay 2008 Madrid - desarrollo de extensiones

  • 1. Por David Noguera Cifuentes JoomlaDay 2008, Madrid Desarrollo de extensiones con Joomla! 1.5
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7. Estructura de un módulo:
  • 8. - mod_Prueba.php : fichero php con el mismo nombre que el módulo, tomará en control del módulo cuando este sea llamado - helper.php : clase helper , sirve para separar la lógica de la presentación. - directorio tmpl : aquí guardaremos las plantillas que usaremos para la presentación -Por defecto, se usa el template default.php - mod_prueba.xml : fichero xml necesario para generar un instalable y donde especificaremos los parametros del módulo.
  • 9.
  • 10. Código del punto de entrada mod_prueba.php <?php   // no permitir acceso directo defined ( ‘_JEXEC’ ) or die ( ‘Restricted access’ );   // incluir al helper que devolverá los datos, solo una vez require_once( dirname (__FILE__).DS.‘helper.php’ );   $mensaje = modPruebaHelper::getMensaje( $params ); require( JModuleHelper::getLayoutPath( ‘mod_prueba’,‘default’) ); ?>
  • 11. Código del helper: <?php class modPruebaHelper {     function getMensaje( $params )     {                 return “Hola Mundo”;     } } ?> La clase helper ha de llamarse con el nombre del modulo sin “_” seguido de helper: Nombre del módulo sin “_” + Helper
  • 12. Código del template: default.php <?php echo $mensaje; ?>
  • 13. Fichero XML del módulo <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <install type=&quot;module&quot; version=&quot;1.5.0&quot;>     <name>Prueba</name>     <author>David Noguera</author>     <version>1.0</version>     <creationDate>02-04-2008</creationDate>     <description>Modulo que muestra un mensaje de Hola Mundo</description>     <authorEmail>david@nosolocodigo.com</authorEmail>     <files>     <filename module=&quot;mod_prueba&quot;>mod_prueba.php</filename>          <filename>helper.php</filename>         <filename>mod_prueba.xml</filename>          <filename>tmpl/default.php</filename>     </files> </install>
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.  
  • 22. Comenzamos con el desarrollo..
  • 23. Punto de Entrada <?php defined ( ‘_JEXEC’ ) or die ( ‘Restricted access’ );   require_once( JPATH_COMPONENT.DS.‘controller.php’ );   if($controller = JRequest::getWord(‘controller’)) {     $path = JPATH_COMPONENT.DS.‘controllers’.DS.$controller.‘.php’;     if ( file_exists ($path)) {         require_once $path;     } else {         $controller = “”;     } }   $classname    = ‘PruebaController’.$controller; $controller   = new $classname( ); $controller->execute( JRequest::getVar( ‘task’ ) );   $controller->redirect(); ?>
  • 24.
  • 25. Controlador <?php     defined ( ‘_JEXEC’ ) or die ( ‘Restricted access’ );        jimport(’joomla.application.component.controller’);       class PruebaController extends JController     {         function display()       {             parent::display();       }     }     ?>
  • 26. com_prueba/views/prueba/view.html.php <?php     defined ( ‘_JEXEC’ ) or die ( ‘Restricted access’ );     jimport( ‘joomla.application.component.view’);      class PruebaViewPrueba extends JView     {     function display($tpl = null)   {     $model =& $this->getModel();       $mensaje= $model->getMensaje()       $this->assignRef( ‘mensaje’, $mensaje );         parent::display($tpl);       }       }     ?>
  • 28. Modelo <?php   defined (’_JEXEC’) or die (); jimport( ‘joomla.application.component.model’ );   class PruebaModelPrueba extends JModel {     function getMensaje(){         //Aquí se obtienen datos de la BD         return “Hola soy un valor que ha devuelto el modelo”;       } } ?>
  • 29. Fichero XML del componente <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <!DOCTYPE install SYSTEM &quot;http://dev.joomla.org/xml/1.5/component- install.dtd&quot;> <install type=&quot;component&quot; version=&quot;1.5&quot;> <name>My Extension</name> <creationDate>MonthName Year</creationDate> <author>Author's Name</author> <authorEmail>Author's Email</authorEmail> <authorUrl>Author's Website</authorUrl> <copyright>Copyright Notice</copyright> <license>Component License Agreement</license> <version>Component Version</version> <description>Component Description</description>
  • 30. <administration> <menu>My Extension</menu> <submenu> <menu task=&quot;view&quot;>Items</menu> <menu link=&quot;option=com_categories&section=com_wfaqs;&quot;>Categories</menu> </submenu> <files folder=&quot;administration&quot;> <filename>index.html</filename> <filename>admin.myextension.php</filename> <filename>install.sql</filename> <filename>install.noutf8.sql</filename> <filename>uninstall.sql</filename> <folder>models</folder> <folder>views</folder> <folder>controllers</folder> <folder>tables</folder> </files>
  • 31. <languages folder=&quot;administration&quot;> <language tag=&quot;en-GB&quot;>en-GB.com_myextension.ini</language> <language tag=&quot;de-DE&quot;>de-DE.com_myextension.ini</language> </languages> <media destination=&quot;com_myextension&quot;> <filename>logo.jpg</filename> <filename>index.html</filename> </media> </administration> <install> <sql> <file driver=&quot;mysql&quot; charset=&quot;utf8&quot;>install.sql</file> <file driver=&quot;mysql&quot; charset=&quot;&quot;>install.noutf8.sql</file> </sql> </install> <uninstall> <sql> <file driver=&quot;mysql&quot;>uninstall.sql</file> </sql> </uninstall>
  • 32. <installfile>install.myextension.php</installfile> <uninstallfile>uninstall.myextension.php</uninstallfile> <files> <filename>index.html</filename> <filename>myextension.php</filename> <folder>models</folder> <folder>views</folder> <folder>controllers</folder> <folder>tables</folder> </files> <languages> <language tag=&quot;en-GB&quot;>en-GB.com_myextension.ini</language> <language tag=&quot;de-DE&quot;>de-DE.com_myextension.ini</language> </languages> <media destination=&quot;com_myextension&quot;> <filename>logo.jpg</filename> <filename>index.html</filename> </media> </install>
  • 33. Resultado Final URL: index.php?option=com_prueba&view=prueba
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 40. Fichero XML del plugin
  • 41. <?xml version=”1.0″ encoding=”utf-8″ ?> <install version=”1.5″ type=”plugin” group=”content”> <name>Content - Prueba</name> <author>David Noguera</author> <creationDate>15-02-2008</creationDate> <authorEmail>david@nosolocodigo.com</authorEmail> <authorUrl>www.nosolocodigo.com</authorUrl> <version>1.0</version> <description>Muestra un mensaje antes de mostrar el contenido</description> <files> <filename plugin=”Prueba”>Prueba.php</filename> <filename>Prueba.xml</filename> </files> </install>
  • 42. Fichero holaMundo.php <?php defined ( ‘_JEXEC’ ) or die ( ‘Acceso Restringido’ ); jimport( ‘joomla.plugin.plugin’ );   // Convención : Nombre de la clase (plg + tipo plugin + nombre del plugin) class plgContentPrueba extends JPlugin {   function plgContentPrueba( &$subject ) {     parent::__construct( $subject ); }   function onBeforeDisplayContent(&$article, &$params, $limitstart=0) {       $salidaPantalla = ‘<h2>Hola Mundo</h2>’;     return $salidaPantalla;     } } ?>
  • 44. Fin de la presentación