SlideShare una empresa de Scribd logo
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

Más contenido relacionado

PDF
Introduccción a la programación en Joomla!
PDF
Uso de tecnologías modernas en joomla
PDF
Joomla como plataforma de eCommerce - Joomla Day La Rioja 2016
PDF
Análisis de Grav Cms, ¿es mejor que Wordpress?
PDF
Extender la funcionalidad de WordPress
ODP
Desarrollo tecnologias software_libre_open_source
PDF
Primeros pasos Symfony PHPVigo
KEY
Java poliglota
Introduccción a la programación en Joomla!
Uso de tecnologías modernas en joomla
Joomla como plataforma de eCommerce - Joomla Day La Rioja 2016
Análisis de Grav Cms, ¿es mejor que Wordpress?
Extender la funcionalidad de WordPress
Desarrollo tecnologias software_libre_open_source
Primeros pasos Symfony PHPVigo
Java poliglota

La actualidad más candente (20)

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

Similar a Introducción a la programación para joomla (20)

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

Más de Roberto Segura (8)

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

Último (6)

PPTX
sistemas de informacion.................
DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
PPTX
Conceptos basicos de Base de Datos y sus propiedades
PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
sistemas de informacion.................
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
AutoCAD Herramientas para el futuro, Juan Fandiño
Derechos_de_Autor_y_Creative_Commons.pptx
Conceptos basicos de Base de Datos y sus propiedades
Su punto de partida en la IA: Microsoft 365 Copilot Chat

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. …..