SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
Introducción a la
programación en Joomla!
Sobre mi
● Freelance
● Desarrollando en PHP desde 2010
● Desarrollando para Joomla! desde 2011
● En el top 50 de contribuidores a Joomla
● Algunas de mis contribuciones:
Searchtools, campo de tags, mejoras de
JLayout….
● Administrador Github Joomla
● Joomla! CMS v3.5 release managerTwitter: @phproberto
¿Por qué Joomla?
● Opensource
● 100% communitario y qué comunidad!
● Segundo CMS más usado
● Buenas prácticas
● Multilenguaje y ACL en core
● Evolución como programador
● Evolución como CMS
Requerimientos
● Apache, MySQL, PHP funcionando en local
● IDE:
○ PhpStorm
○ Sublime Text 3
● Recomendados:
○ Joomla Coding Standards
○ Conocimientos de PHP
○ Conocimientos de javascript / jQuery
○ Conocimientos de HTML5 / CSS3
○ Git
○ Xdebug
Tipos de extensiones: librería
● Conjunto de clases reutilizables por otras extensiones.
● Cadenas de idioma comunes para frontend y backend.
● Campos comunes para frontend y backend.
● No suelen mostrar nada por pantalla.
● Ejemplos: phpmailer, FOF, Joomla Framework,
paquetes de Symfony, etc.
● Tiempo de desarrollo: 1 día.
Librerías del core
/libraries
Tipos de extensiones: plugin
● Preproceso de la página enganchándose a eventos
predefinidos.
● Suele procesar datos predefinidos que ya han sido
generados por componentes o por el core.
● Frontend y backend.
● Ejemplos: comentarios disqus, botones enlaces a redes
sociales, autentificación, minimizado de javascript, etc.
● Tiempo de desarrollo aproximado: 2 días
Tipos de extensiones: módulo
● Pequeño bloque que se muestra en diferentes posiciones
del template.
● Suele usar modelos de componentes ya instalados o
datos externos.
● Frontend y backend.
● Ejemplos: últimos artículos, feed de noticias, caja de
login, HTML estático, etc.
● Tiempo de desarrollo aproximado: 2 días
Tipos de extensiones: componente
● Sistema completo de gestión de contenidos.
● Suele incluir: modelos, tablas, controladores,
formularios, vistas, etc.
● Suelen integrar gestión de backend y frontend.
● Gestión de permisos de usuarios (ACL).
● Vistas completas enlazables desde los menús.
● Suelen ir acompañados de módulos y plugins.
● Ejemplos: com_content, k2, virtuemart, etc.
● Tiempo de desarrollo aproximado: indefinido.
Tipos de extensiones: plantilla
● Renderizado de la página.
● Incluyen posiciones predefinidas para la inclusión de
módulo.
● Existen diferentes frameworks de plantillas
● Suelen usar frontend frameworks como Twitter
Bootstrap, Foundation, Uikit, etc.
● Clubs de plantillas.
● Ejemplos: protostar, master bootstrap, blank template,
etc.
● Tiempo de desarrollo aproximado: 1 semana.
Enlaces de interés
● Joomla Developer documentation
○ Sample component
○ Sample module
○ Sample plugin
● Joomla forums
○ Subforo español
● Joomla General Development Google Group
● Git and Github basics
● J and Beyond videos
● joomgouts.com
Configuración de Sublime Text
1. Instalar Package Control
2. Instalar Sidebar Enhacements
3. Instalar GotoDocumentation
4. Instalar TrailingSpaces
5. Instalar GitGutter
6. Instalar DocBlockr
7. Instalar PHP Code Sniffer
8. Instalar Aligntab
9. Instalar XdebugClient
Modulo de ejemplo: Github Card
● Mostrar perfil de Github.
● JLayout para el render.
● API del core de Github.
● Ejemplo uso de tablas.
● Gestión de directorio media.
● Templates/Layouts personalizables.
● Uso de layouts reutilizables.
● Estilos con Sass.
● Integrado con sistema Gulp.
● Gestión de idiomas.
Recomendaciones previas
● Usa el core como referencia.
● Nunca cargar JS o CSS desde la carpeta del módulo.
● HTML, JS y CSS SIEMPRE personalizables en plantilla.
● Intentar cargar siempre JS y CSS comprimidos.
● Si necesitas cargar jQuery agrega parámetro en config.
● Considera crear tu propia librería común.
● Usar JDatabaseQuery para consultas SQL.
● Escapar siempre variables en consultas SQL.
● Usar autoloading para carga de classes.
Módulo: Estructura básica
Módulo: pseudo-MVC
Módulo: Estructura avanzada
Módulo: Estructura propuesta
Ventajas de la estructura propuesta
● Clase base del módulo reutilizable.
● Uso de autoloading para nuestras clases.
● Uso de JLayout para el render.
● Carga simple de JS/CSS.
● Carga/proceso simple de datos.
● Cambio dinámico de layouts (reusabilidad).
Manifiesto XML
● Usado por el instalador de Joomla.
● Versión del módulo y copyright.
● Modificaciones de base de datos.
● Archivos a instalar.
● Media folder a instalar.
● Parámetros para personalización del módulo.
● Servidor de actualizaciones automáticas.
Manifiesto XML: Copyright + versión
Archivos de idioma
Joomla 3 no requiere instalación explícita de idiomas
Manifiesto XML: SQL
Archivos SQL
Manifiesto XML: Archivos módulo
Recuerda agregar cualquier nuevo directorio / archivo
Ordena por orden alfabético para evitar errores
Manifiesto XML: Archivos media
Manifiesto XML: update server
Manifiesto XML: parameters
● “basic” y “advanced” son
fieldsets por defecto.
● Cualquier otro fieldset es
creado como nueva pestaña.
● Tipos de campos estándar
● Campos personalizados
(addfieldpath)
Flujo render módulo
1. JDocumentRendererModule::render($module, $attribs =
array(), $content = null)
2. JModuleHelper::renderModule($module, $attribs = array())
3. Punto de entrada
4. Instancia
5. Layouts
6. Instancia
7. Layouts
8. …..
Y ahora….
A abrir el IDE

Weitere ähnliche Inhalte

Was ist angesagt?

PHP para todos con Visual Studio Code Modulo 1
 PHP para todos con Visual Studio Code Modulo 1  PHP para todos con Visual Studio Code Modulo 1
PHP para todos con Visual Studio Code Modulo 1 Maleny Abrego
 
Optimiza tus webs a bajo costo - WCVenezuela2021
Optimiza tus webs a bajo costo - WCVenezuela2021Optimiza tus webs a bajo costo - WCVenezuela2021
Optimiza tus webs a bajo costo - WCVenezuela2021Fernando Puente
 
Modulo 2 Visual Studio Code
Modulo 2 Visual Studio CodeModulo 2 Visual Studio Code
Modulo 2 Visual Studio CodeMaleny Abrego
 
WPO para proyectos WooComerce
WPO para proyectos WooComerceWPO para proyectos WooComerce
WPO para proyectos WooComerceFernando Puente
 
Taller WPO - Carga condicional de plugins
Taller WPO - Carga condicional de pluginsTaller WPO - Carga condicional de plugins
Taller WPO - Carga condicional de pluginsFernando Puente
 
HTTP/3, PHP 7.4 y otras novedades en WPO para WordPress
HTTP/3, PHP 7.4 y otras novedades en WPO para WordPressHTTP/3, PHP 7.4 y otras novedades en WPO para WordPress
HTTP/3, PHP 7.4 y otras novedades en WPO para WordPressFernando Puente
 
Webinar: Introducción a VUE.js
Webinar: Introducción a VUE.jsWebinar: Introducción a VUE.js
Webinar: Introducción a VUE.jsArsys
 
El proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open SourceEl proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open SourceJose Juan R. Zuñiga
 
Angular, ionic y Django amigos con derecho a roce - Pycon 2017
Angular, ionic y Django  amigos con derecho a roce - Pycon 2017Angular, ionic y Django  amigos con derecho a roce - Pycon 2017
Angular, ionic y Django amigos con derecho a roce - Pycon 2017BeDjango
 
Blazor, un nuevo framework .NET
Blazor, un nuevo framework .NETBlazor, un nuevo framework .NET
Blazor, un nuevo framework .NETJonathan González
 
Buenas prácticas en el proceso de desarrollo de un proyecto
 Buenas prácticas en el proceso de desarrollo de un proyecto Buenas prácticas en el proceso de desarrollo de un proyecto
Buenas prácticas en el proceso de desarrollo de un proyectoSoftware Guru
 
#MM17ES - Theming en Magento 2 usando un framework de front-end
#MM17ES - Theming en Magento 2 usando un framework de front-end#MM17ES - Theming en Magento 2 usando un framework de front-end
#MM17ES - Theming en Magento 2 usando un framework de front-endRubén Rodríguez
 

Was ist angesagt? (20)

PHP para todos con Visual Studio Code Modulo 1
 PHP para todos con Visual Studio Code Modulo 1  PHP para todos con Visual Studio Code Modulo 1
PHP para todos con Visual Studio Code Modulo 1
 
Optimiza tus webs a bajo costo - WCVenezuela2021
Optimiza tus webs a bajo costo - WCVenezuela2021Optimiza tus webs a bajo costo - WCVenezuela2021
Optimiza tus webs a bajo costo - WCVenezuela2021
 
Modulo 2 Visual Studio Code
Modulo 2 Visual Studio CodeModulo 2 Visual Studio Code
Modulo 2 Visual Studio Code
 
WPO para proyectos WooComerce
WPO para proyectos WooComerceWPO para proyectos WooComerce
WPO para proyectos WooComerce
 
PHP
PHPPHP
PHP
 
Taller WPO - Carga condicional de plugins
Taller WPO - Carga condicional de pluginsTaller WPO - Carga condicional de plugins
Taller WPO - Carga condicional de plugins
 
HTTP/3, PHP 7.4 y otras novedades en WPO para WordPress
HTTP/3, PHP 7.4 y otras novedades en WPO para WordPressHTTP/3, PHP 7.4 y otras novedades en WPO para WordPress
HTTP/3, PHP 7.4 y otras novedades en WPO para WordPress
 
Caché y WordPress
Caché y WordPressCaché y WordPress
Caché y WordPress
 
Webinar: Introducción a VUE.js
Webinar: Introducción a VUE.jsWebinar: Introducción a VUE.js
Webinar: Introducción a VUE.js
 
El proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open SourceEl proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open Source
 
Skipfish
Skipfish Skipfish
Skipfish
 
Pangoscrum
PangoscrumPangoscrum
Pangoscrum
 
Angular, ionic y Django amigos con derecho a roce - Pycon 2017
Angular, ionic y Django  amigos con derecho a roce - Pycon 2017Angular, ionic y Django  amigos con derecho a roce - Pycon 2017
Angular, ionic y Django amigos con derecho a roce - Pycon 2017
 
Blazor, un nuevo framework .NET
Blazor, un nuevo framework .NETBlazor, un nuevo framework .NET
Blazor, un nuevo framework .NET
 
No quiero vuestra basura en Android
No quiero vuestra basura en AndroidNo quiero vuestra basura en Android
No quiero vuestra basura en Android
 
Editores WYSIWYG
Editores WYSIWYG Editores WYSIWYG
Editores WYSIWYG
 
Introducción a CoffeeScript
Introducción a CoffeeScriptIntroducción a CoffeeScript
Introducción a CoffeeScript
 
Buenas prácticas en el proceso de desarrollo de un proyecto
 Buenas prácticas en el proceso de desarrollo de un proyecto Buenas prácticas en el proceso de desarrollo de un proyecto
Buenas prácticas en el proceso de desarrollo de un proyecto
 
#MM17ES - Theming en Magento 2 usando un framework de front-end
#MM17ES - Theming en Magento 2 usando un framework de front-end#MM17ES - Theming en Magento 2 usando un framework de front-end
#MM17ES - Theming en Magento 2 usando un framework de front-end
 
Grails en el Fonasol
Grails en el FonasolGrails en el Fonasol
Grails en el Fonasol
 

Ähnlich wie Introducción a la programación para joomla

MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!SergioIglesiasNET
 
¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days¡This is drupal! - Global Training Days
¡This is drupal! - Global Training DaysLa Drupalera
 
Pablo Arias: Joomla como herramienta para el desarrollo web
Pablo Arias: Joomla como herramienta para el desarrollo webPablo Arias: Joomla como herramienta para el desarrollo web
Pablo Arias: Joomla como herramienta para el desarrollo webPHP Vigo
 
Migración Joomla 1.5 a 2.5/3.x
Migración Joomla 1.5 a 2.5/3.xMigración Joomla 1.5 a 2.5/3.x
Migración Joomla 1.5 a 2.5/3.xjachavesnaranjo
 
Introduccion técnica a Drupal
Introduccion técnica a DrupalIntroduccion técnica a Drupal
Introduccion técnica a DrupalPedro Cambra
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendmenttes
 
Taller de Drupal - Sesión 2
Taller de Drupal - Sesión 2Taller de Drupal - Sesión 2
Taller de Drupal - Sesión 2SEAT, S.A.
 
#JoomlaIO - Desarrollo de Plantillas para Joomla!
#JoomlaIO - Desarrollo de Plantillas para Joomla!#JoomlaIO - Desarrollo de Plantillas para Joomla!
#JoomlaIO - Desarrollo de Plantillas para Joomla!SergioIglesiasNET
 
El universo JavaScript en Drupal 8
El universo JavaScript en Drupal 8El universo JavaScript en Drupal 8
El universo JavaScript en Drupal 8Ymbra
 
Blogging con Joomla - JoomlaDay Zaragoza 2011
Blogging con Joomla - JoomlaDay Zaragoza 2011Blogging con Joomla - JoomlaDay Zaragoza 2011
Blogging con Joomla - JoomlaDay Zaragoza 2011Isidro Baquero Portero
 
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10Keopx
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosGeorge Navarro Gomez
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosGeorge Navarro Gomez
 

Ähnlich wie Introducción a la programación para joomla (20)

MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!
 
This is Drupal! (Basics)
This is Drupal! (Basics)This is Drupal! (Basics)
This is Drupal! (Basics)
 
¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days
 
Pablo Arias: Joomla como herramienta para el desarrollo web
Pablo Arias: Joomla como herramienta para el desarrollo webPablo Arias: Joomla como herramienta para el desarrollo web
Pablo Arias: Joomla como herramienta para el desarrollo web
 
Presentación TE: CMS y en especial joomla.
Presentación TE: CMS y en especial joomla.Presentación TE: CMS y en especial joomla.
Presentación TE: CMS y en especial joomla.
 
Introduccion drupal
Introduccion drupalIntroduccion drupal
Introduccion drupal
 
¡This is drupal!
¡This is drupal!¡This is drupal!
¡This is drupal!
 
Migración Joomla 1.5 a 2.5/3.x
Migración Joomla 1.5 a 2.5/3.xMigración Joomla 1.5 a 2.5/3.x
Migración Joomla 1.5 a 2.5/3.x
 
Introduccion técnica a Drupal
Introduccion técnica a DrupalIntroduccion técnica a Drupal
Introduccion técnica a Drupal
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
 
Taller de Drupal - Sesión 2
Taller de Drupal - Sesión 2Taller de Drupal - Sesión 2
Taller de Drupal - Sesión 2
 
#JoomlaIO - Desarrollo de Plantillas para Joomla!
#JoomlaIO - Desarrollo de Plantillas para Joomla!#JoomlaIO - Desarrollo de Plantillas para Joomla!
#JoomlaIO - Desarrollo de Plantillas para Joomla!
 
El universo JavaScript en Drupal 8
El universo JavaScript en Drupal 8El universo JavaScript en Drupal 8
El universo JavaScript en Drupal 8
 
Drupal - Introducción
Drupal - IntroducciónDrupal - Introducción
Drupal - Introducción
 
Blogging con Joomla - JoomlaDay Zaragoza 2011
Blogging con Joomla - JoomlaDay Zaragoza 2011Blogging con Joomla - JoomlaDay Zaragoza 2011
Blogging con Joomla - JoomlaDay Zaragoza 2011
 
Migrando data - DRUPAL
Migrando data - DRUPALMigrando data - DRUPAL
Migrando data - DRUPAL
 
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales Conceptos
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales Conceptos
 
Sesionmoodle 101223143117-phpapp02
Sesionmoodle 101223143117-phpapp02Sesionmoodle 101223143117-phpapp02
Sesionmoodle 101223143117-phpapp02
 

Mehr von Roberto Segura

Using twig as rendering system for your Joomla extensions
Using twig as rendering system for your Joomla extensionsUsing twig as rendering system for your Joomla extensions
Using twig as rendering system for your Joomla extensionsRoberto Segura
 
TDD for joomla extensions
TDD for joomla extensionsTDD for joomla extensions
TDD for joomla extensionsRoberto Segura
 
Joomla Entity - API semántica para Joomla
Joomla Entity - API semántica para JoomlaJoomla Entity - API semántica para Joomla
Joomla Entity - API semántica para JoomlaRoberto Segura
 
JLayout for extension developers
JLayout for extension developersJLayout for extension developers
JLayout for extension developersRoberto Segura
 
Plugin para-joomla-45-minutos
Plugin para-joomla-45-minutosPlugin para-joomla-45-minutos
Plugin para-joomla-45-minutosRoberto Segura
 
Git for joomla! development #JAB14
Git for joomla! development #JAB14Git for joomla! development #JAB14
Git for joomla! development #JAB14Roberto Segura
 
Joomla! future #jd14fr keynote
Joomla! future #jd14fr keynoteJoomla! future #jd14fr keynote
Joomla! future #jd14fr keynoteRoberto Segura
 

Mehr von Roberto Segura (8)

Using twig as rendering system for your Joomla extensions
Using twig as rendering system for your Joomla extensionsUsing twig as rendering system for your Joomla extensions
Using twig as rendering system for your Joomla extensions
 
TDD for joomla extensions
TDD for joomla extensionsTDD for joomla extensions
TDD for joomla extensions
 
Joomla Entity - API semántica para Joomla
Joomla Entity - API semántica para JoomlaJoomla Entity - API semántica para Joomla
Joomla Entity - API semántica para Joomla
 
JLayout for extension developers
JLayout for extension developersJLayout for extension developers
JLayout for extension developers
 
Plugin para-joomla-45-minutos
Plugin para-joomla-45-minutosPlugin para-joomla-45-minutos
Plugin para-joomla-45-minutos
 
Joomla JLayout
Joomla JLayout Joomla JLayout
Joomla JLayout
 
Git for joomla! development #JAB14
Git for joomla! development #JAB14Git for joomla! development #JAB14
Git for joomla! development #JAB14
 
Joomla! future #jd14fr keynote
Joomla! future #jd14fr keynoteJoomla! future #jd14fr keynote
Joomla! future #jd14fr keynote
 

Kürzlich hochgeladen

Webinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdfWebinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdfAnaRosaMontenegro
 
Presentación acerca de la importancia de la filosofia en la ingenieria en sis...
Presentación acerca de la importancia de la filosofia en la ingenieria en sis...Presentación acerca de la importancia de la filosofia en la ingenieria en sis...
Presentación acerca de la importancia de la filosofia en la ingenieria en sis...capil94195
 
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Neo4j
 
Trabajo Tecnologia - José Alejandro Martínez Torres 11-5
Trabajo Tecnologia - José Alejandro Martínez Torres 11-5Trabajo Tecnologia - José Alejandro Martínez Torres 11-5
Trabajo Tecnologia - José Alejandro Martínez Torres 11-5Laura225304
 
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosBBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosNeo4j
 
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...Neo4j
 
Delitos informáticos en Slideshare.pptx
Delitos informáticos en  Slideshare.pptxDelitos informáticos en  Slideshare.pptx
Delitos informáticos en Slideshare.pptxmaykolmagallanes012
 

Kürzlich hochgeladen (7)

Webinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdfWebinar Resolucion2335 de 2023 Kubapp.pdf
Webinar Resolucion2335 de 2023 Kubapp.pdf
 
Presentación acerca de la importancia de la filosofia en la ingenieria en sis...
Presentación acerca de la importancia de la filosofia en la ingenieria en sis...Presentación acerca de la importancia de la filosofia en la ingenieria en sis...
Presentación acerca de la importancia de la filosofia en la ingenieria en sis...
 
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
Graph Everywhere - Josep Taruella - Por qué Graph Data Science en tus modelos...
 
Trabajo Tecnologia - José Alejandro Martínez Torres 11-5
Trabajo Tecnologia - José Alejandro Martínez Torres 11-5Trabajo Tecnologia - José Alejandro Martínez Torres 11-5
Trabajo Tecnologia - José Alejandro Martínez Torres 11-5
 
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafosBBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
BBVA - GraphSummit Madrid - Caso de éxito en BBVA: Optimizando con grafos
 
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
ISDEFE - GraphSummit Madrid - ARETA: Aviation Real-Time Emissions Token Accre...
 
Delitos informáticos en Slideshare.pptx
Delitos informáticos en  Slideshare.pptxDelitos informáticos en  Slideshare.pptx
Delitos informáticos en Slideshare.pptx
 

Introducción a la programación para joomla

  • 2. Sobre mi ● Freelance ● Desarrollando en PHP desde 2010 ● Desarrollando para Joomla! desde 2011 ● En el top 50 de contribuidores a Joomla ● Algunas de mis contribuciones: Searchtools, campo de tags, mejoras de JLayout…. ● Administrador Github Joomla ● Joomla! CMS v3.5 release managerTwitter: @phproberto
  • 3. ¿Por qué Joomla? ● Opensource ● 100% communitario y qué comunidad! ● Segundo CMS más usado ● Buenas prácticas ● Multilenguaje y ACL en core ● Evolución como programador ● Evolución como CMS
  • 4. Requerimientos ● Apache, MySQL, PHP funcionando en local ● IDE: ○ PhpStorm ○ Sublime Text 3 ● Recomendados: ○ Joomla Coding Standards ○ Conocimientos de PHP ○ Conocimientos de javascript / jQuery ○ Conocimientos de HTML5 / CSS3 ○ Git ○ Xdebug
  • 5. Tipos de extensiones: librería ● Conjunto de clases reutilizables por otras extensiones. ● Cadenas de idioma comunes para frontend y backend. ● Campos comunes para frontend y backend. ● No suelen mostrar nada por pantalla. ● Ejemplos: phpmailer, FOF, Joomla Framework, paquetes de Symfony, etc. ● Tiempo de desarrollo: 1 día.
  • 7. Tipos de extensiones: plugin ● Preproceso de la página enganchándose a eventos predefinidos. ● Suele procesar datos predefinidos que ya han sido generados por componentes o por el core. ● Frontend y backend. ● Ejemplos: comentarios disqus, botones enlaces a redes sociales, autentificación, minimizado de javascript, etc. ● Tiempo de desarrollo aproximado: 2 días
  • 8. Tipos de extensiones: módulo ● Pequeño bloque que se muestra en diferentes posiciones del template. ● Suele usar modelos de componentes ya instalados o datos externos. ● Frontend y backend. ● Ejemplos: últimos artículos, feed de noticias, caja de login, HTML estático, etc. ● Tiempo de desarrollo aproximado: 2 días
  • 9. Tipos de extensiones: componente ● Sistema completo de gestión de contenidos. ● Suele incluir: modelos, tablas, controladores, formularios, vistas, etc. ● Suelen integrar gestión de backend y frontend. ● Gestión de permisos de usuarios (ACL). ● Vistas completas enlazables desde los menús. ● Suelen ir acompañados de módulos y plugins. ● Ejemplos: com_content, k2, virtuemart, etc. ● Tiempo de desarrollo aproximado: indefinido.
  • 10. Tipos de extensiones: plantilla ● Renderizado de la página. ● Incluyen posiciones predefinidas para la inclusión de módulo. ● Existen diferentes frameworks de plantillas ● Suelen usar frontend frameworks como Twitter Bootstrap, Foundation, Uikit, etc. ● Clubs de plantillas. ● Ejemplos: protostar, master bootstrap, blank template, etc. ● Tiempo de desarrollo aproximado: 1 semana.
  • 11. Enlaces de interés ● Joomla Developer documentation ○ Sample component ○ Sample module ○ Sample plugin ● Joomla forums ○ Subforo español ● Joomla General Development Google Group ● Git and Github basics ● J and Beyond videos ● joomgouts.com
  • 12. Configuración de Sublime Text 1. Instalar Package Control 2. Instalar Sidebar Enhacements 3. Instalar GotoDocumentation 4. Instalar TrailingSpaces 5. Instalar GitGutter 6. Instalar DocBlockr 7. Instalar PHP Code Sniffer 8. Instalar Aligntab 9. Instalar XdebugClient
  • 13. Modulo de ejemplo: Github Card ● Mostrar perfil de Github. ● JLayout para el render. ● API del core de Github. ● Ejemplo uso de tablas. ● Gestión de directorio media. ● Templates/Layouts personalizables. ● Uso de layouts reutilizables. ● Estilos con Sass. ● Integrado con sistema Gulp. ● Gestión de idiomas.
  • 14. Recomendaciones previas ● Usa el core como referencia. ● Nunca cargar JS o CSS desde la carpeta del módulo. ● HTML, JS y CSS SIEMPRE personalizables en plantilla. ● Intentar cargar siempre JS y CSS comprimidos. ● Si necesitas cargar jQuery agrega parámetro en config. ● Considera crear tu propia librería común. ● Usar JDatabaseQuery para consultas SQL. ● Escapar siempre variables en consultas SQL. ● Usar autoloading para carga de classes.
  • 19. Ventajas de la estructura propuesta ● Clase base del módulo reutilizable. ● Uso de autoloading para nuestras clases. ● Uso de JLayout para el render. ● Carga simple de JS/CSS. ● Carga/proceso simple de datos. ● Cambio dinámico de layouts (reusabilidad).
  • 20. Manifiesto XML ● Usado por el instalador de Joomla. ● Versión del módulo y copyright. ● Modificaciones de base de datos. ● Archivos a instalar. ● Media folder a instalar. ● Parámetros para personalización del módulo. ● Servidor de actualizaciones automáticas.
  • 22. Archivos de idioma Joomla 3 no requiere instalación explícita de idiomas
  • 25. Manifiesto XML: Archivos módulo Recuerda agregar cualquier nuevo directorio / archivo Ordena por orden alfabético para evitar errores
  • 28. Manifiesto XML: parameters ● “basic” y “advanced” son fieldsets por defecto. ● Cualquier otro fieldset es creado como nueva pestaña. ● Tipos de campos estándar ● Campos personalizados (addfieldpath)
  • 29. Flujo render módulo 1. JDocumentRendererModule::render($module, $attribs = array(), $content = null) 2. JModuleHelper::renderModule($module, $attribs = array()) 3. Punto de entrada 4. Instancia 5. Layouts 6. Instancia 7. Layouts 8. …..