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

El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
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
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
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
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
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
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 

Último (20)

El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
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
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
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
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
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
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 

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