SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
Hello!
This is Drupal!
Emergya
Sobre nosotros
La Drupalera AED Grupo Local Sevilla
José Luis Bellido
@jose_lakatos
Nesta Guerrero
@Nesta_
¿Qué vamos a ver?
● Introducción
● Conceptos básicos
● Desarrollo: extendiendo Drupal
● Debugging, rendimiento y seguridad
● Referencias
1. Introducción
Introducción: ¿Qué es?
● CMS escrito en PHP
● Extensible mediante módulos y
temas
● Arquitectura LAMP
● Software libre (GPL)
● Actualmente, Drupal 7
● Lo mejor: La comunidad
Introducción: Puntos fuertes
● Gran flexibilidad
● Enorme velocidad de desarrollo
● Separación de presentación y lógica
● Multitud de módulos (16k+) y temas (1.2k+)
disponibles
● Documentación extensa y calidad
● Soporte por parte de la comunidad
Introducción: Puntos débiles
● Bajo rendimiento:
Dependencia de caché
● Menor usabilidad para el
usuario final
● Incompatibilidad entre
versiones mayores
● Curva de aprendizaje elevada
Puede parecer una tarea imposible..
Pero solo es cuestión de echarle ganas
2. Conceptos básicos
Conceptos básicos: Componentes
● Core : Instalación básica de
Drupal
● Module: Extensión de la
funcionalidad del core
● Theme: Extensión “visual”
(Plantillas, estilos..)
● Library: Librerías externas con
funcionalidad adicional
Conceptos básicos: Sistema de publicación
● Tipo de contenido
● Campos
● Nodo
● Comentario
● Taxonomía
Conceptos básicos: Organizar la información
● Menú
● Página
● Región
● Bloque
● Plantilla
Conceptos básicos: Gestión de usuarios
● Usuario
● Perfil
● Rol
● Permiso
3. Desarrollo extendido en Drupal
Programación estructurada, objetos en
Drupal 8.
● Todas las peticiones se reciben en index.php (mod
rewrite) URLs del tipo index.php?q=esto/es/una/url
● Se carga el bootstrap
● Ejecución de entrada del menú
● Función de callback
● Salida se pasa al Theme, renderizado y envío de la
respuesta al navegador
3.1. Hooks
Conceptos importante: Hooks
● Funciones que se ejecutan cuando un evento sucede
● Ejemplo: hook_init → cuando termina la carga de bootstrap
● Orden determinado por el peso del módulo que lo
implementa
● Un hook de cada tipo por módulo
● Esquema de nombre: nombre_modulo_nombre_hook()
Múltiples API’s: Algunas API de Drupal
● Form API: Formularios
● Database API: Base de datos
● Entity API: Nodos, términos, comentarios, …
● Field API: Campos de entidades
● Batch API: Operaciones por lotes
● Sistema de menú
● Variables persistentes
● Sistema de traducción
● ...
3.2. Módulos
¿Cómo es un módulo? Estructura de directorios
● sites/all/modules/tipo-modulo/nombre_modulo
○ contrib
○ custom
○ features
○ patch
● Subdirectorios:
○ js
○ css
○ img
○ includes
○ tpl, translations, …
¿Cómo es un módulo? Ficheros
● nombre_modulo.info → Meta-información del módulo
● nombre_modulo.module → Implementación de hooks
● nombre_modulo.install → Hooks de instalación/desinstalación
● nombre_modulo.admin.inc → Configuración del módulo
● nombre_modulo.inc → Funciones que no son hooks
● nombre_modulo.views.inc → Hooks del módulo Views
3.3. Sistema de Plantillas
Capa de presentación: Sistemas de plantillas
● Plantilla HTML con código PHP incrustado
● nombre_fichero.tpl.php
● Usado según nomenclatura del fichero
● Recibe un array de parámetros ($vars)
● Funciones de preprocesado
Ejercicio:
URL que recibe parámetro y lo muestra por pantalla
● Fichero info
● Fichero module
● Hook menu, definir la URL
● Hook permissions, definir permiso de acceso
● Hook theme, definir plantilla
● Definición de callback
● Interactuar con la base de datos
● Añadir Javascript y CSS
● Hook node view, responde a visualización de nodo
4. Debugging, rendimiento y
seguridad
Debugging
● Drush (no solo debug)
● Módulo devel
● Módulo coder
● xdebug
● xhprof
● Drupal for Firebug
Rendimiento
● Memcache
● Apc / Opcache
● Varnish
● Authcache
● ApacheSolr
● Monitorización
Sin olvidar: Buenas prácticas y Arquitectura adecuada
Seguridad
● Seguridad en profundidad
● Drupal proporciona gran variedad de herramientas
● La importancia de la formación
http://2013.drupalcamp.es/desarrollo-seguro-en-drupal
5. Referencias
Referencias
Página oficial de Drupal
https://drupal.org
Documentación completa
https://drupal.org/documentation
Estándar de codificación
https://drupal.org/coding-standards
Drupal 7 Pro Development
http://www.drupalbook.com
High Performance Drupal
https://drupal.org/node/2119971
Blog La Drupalera
http://www.ladrupalera.com/drupal/
Api Drupal 7
https://api.drupal.org/api/drupal
Drupal Modules
http://drupalmodules.com/
Grupo Local de Sevilla
https://groups.drupal.org/sevilla
Canal vimeo
http://vimeo.com/drupales
Referencias
Ejemplos completos
https://github.com/jlbellido/aed_drupal_workshop
Web DrupalCamp 2015 en Jerez!
http://2015.drupalcamp.es/
Conclusión
● Cuestión de echarle
ganas... y horas
● Velocidad, flexibilidad...
● ¿Lo mejor? La comunidad
¡Gracias!
¿Preguntas?

Más contenido relacionado

La actualidad más candente

Active directory
Active directoryActive directory
Active directory
Erii Amaya
 
Presentación1
Presentación1Presentación1
Presentación1
YinaGarzon
 
Active directory
  Active directory  Active directory
Active directory
DC03
 
ActIVE
ActIVEActIVE
ActIVE
NOEMY
 
Introduccion LDAP
Introduccion LDAPIntroduccion LDAP
Introduccion LDAP
cyberleon95
 

La actualidad más candente (19)

Active directory
Active directoryActive directory
Active directory
 
Presentación1
Presentación1Presentación1
Presentación1
 
Introducción a Open Ldap
Introducción a Open LdapIntroducción a Open Ldap
Introducción a Open Ldap
 
Active directory
  Active directory  Active directory
Active directory
 
ActIVE
ActIVEActIVE
ActIVE
 
Introduccion LDAP
Introduccion LDAPIntroduccion LDAP
Introduccion LDAP
 
Sistema operativo-de-red
Sistema operativo-de-redSistema operativo-de-red
Sistema operativo-de-red
 
Base de datos 1
Base de datos 1Base de datos 1
Base de datos 1
 
Act. 4 screencast y base de datos norma
Act. 4 screencast y base de datos normaAct. 4 screencast y base de datos norma
Act. 4 screencast y base de datos norma
 
Ldap
LdapLdap
Ldap
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
Principales bases de datos existentes
Principales bases de datos existentesPrincipales bases de datos existentes
Principales bases de datos existentes
 
Seguridad en directorio activo
Seguridad en directorio activoSeguridad en directorio activo
Seguridad en directorio activo
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
BASE DE DATOS
BASE DE DATOSBASE DE DATOS
BASE DE DATOS
 
Curso avanzado de capacitación en DSpace
Curso avanzado de capacitación en DSpaceCurso avanzado de capacitación en DSpace
Curso avanzado de capacitación en DSpace
 
Principales bases de datos existentes
Principales bases de datos existentesPrincipales bases de datos existentes
Principales bases de datos existentes
 
Pricipales bases de datos
Pricipales bases de datosPricipales bases de datos
Pricipales bases de datos
 
Base de datos
Base de datosBase de datos
Base de datos
 

Similar a ¡This is drupal!

Taller de Drupal - Sesión 2
Taller de Drupal - Sesión 2Taller de Drupal - Sesión 2
Taller de Drupal - Sesión 2
SEAT, S.A.
 
Presentacion Drupal Ccrtv
Presentacion Drupal CcrtvPresentacion Drupal Ccrtv
Presentacion Drupal Ccrtv
Pedro Cambra
 

Similar a ¡This is drupal! (20)

¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days
 
This is Drupal! (Basics)
This is Drupal! (Basics)This is Drupal! (Basics)
This is Drupal! (Basics)
 
Introduccion drupal
Introduccion drupalIntroduccion drupal
Introduccion drupal
 
Drupal - Introducción
Drupal - IntroducciónDrupal - Introducción
Drupal - Introducción
 
[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
 
Programación de módulos para Drupal 7
Programación de módulos para Drupal 7Programación de módulos para Drupal 7
Programación de módulos para Drupal 7
 
Introducción a la programación para joomla
Introducción a la programación para joomlaIntroducción a la programación para joomla
Introducción a la programación para joomla
 
Introduccion técnica a Drupal
Introduccion técnica a DrupalIntroduccion técnica a Drupal
Introduccion técnica a Drupal
 
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7
 
Drupal 7: mucho más que una nueva versión (para desarrolladores)
Drupal 7: mucho más que una nueva versión (para desarrolladores)Drupal 7: mucho más que una nueva versión (para desarrolladores)
Drupal 7: mucho más que una nueva versión (para desarrolladores)
 
Taller de Drupal - Sesión 2
Taller de Drupal - Sesión 2Taller de Drupal - Sesión 2
Taller de Drupal - Sesión 2
 
Presentacion Drupal Ccrtv
Presentacion Drupal CcrtvPresentacion Drupal Ccrtv
Presentacion Drupal Ccrtv
 
Arquitectura de proyectos Drupal
Arquitectura de proyectos DrupalArquitectura de proyectos Drupal
Arquitectura de proyectos Drupal
 
e-Ghost 2014: introducción al desarrollo de módulos en drupal 7
e-Ghost 2014: introducción al desarrollo de módulos en drupal 7e-Ghost 2014: introducción al desarrollo de módulos en drupal 7
e-Ghost 2014: introducción al desarrollo de módulos en drupal 7
 
Taller drupal 8 tuxtepec
Taller drupal 8 tuxtepecTaller drupal 8 tuxtepec
Taller drupal 8 tuxtepec
 
MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!
 
Creando módulos en Drupal 7
Creando módulos en Drupal 7Creando módulos en Drupal 7
Creando módulos en Drupal 7
 
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 a Drupal 6 e-ghost
Introduccion a Drupal 6 e-ghostIntroduccion a Drupal 6 e-ghost
Introduccion a Drupal 6 e-ghost
 
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
 

¡This is drupal!

  • 2. Sobre nosotros La Drupalera AED Grupo Local Sevilla José Luis Bellido @jose_lakatos Nesta Guerrero @Nesta_
  • 3. ¿Qué vamos a ver? ● Introducción ● Conceptos básicos ● Desarrollo: extendiendo Drupal ● Debugging, rendimiento y seguridad ● Referencias
  • 5. Introducción: ¿Qué es? ● CMS escrito en PHP ● Extensible mediante módulos y temas ● Arquitectura LAMP ● Software libre (GPL) ● Actualmente, Drupal 7 ● Lo mejor: La comunidad
  • 6. Introducción: Puntos fuertes ● Gran flexibilidad ● Enorme velocidad de desarrollo ● Separación de presentación y lógica ● Multitud de módulos (16k+) y temas (1.2k+) disponibles ● Documentación extensa y calidad ● Soporte por parte de la comunidad
  • 7. Introducción: Puntos débiles ● Bajo rendimiento: Dependencia de caché ● Menor usabilidad para el usuario final ● Incompatibilidad entre versiones mayores ● Curva de aprendizaje elevada
  • 8. Puede parecer una tarea imposible..
  • 9. Pero solo es cuestión de echarle ganas
  • 11. Conceptos básicos: Componentes ● Core : Instalación básica de Drupal ● Module: Extensión de la funcionalidad del core ● Theme: Extensión “visual” (Plantillas, estilos..) ● Library: Librerías externas con funcionalidad adicional
  • 12. Conceptos básicos: Sistema de publicación ● Tipo de contenido ● Campos ● Nodo ● Comentario ● Taxonomía
  • 13. Conceptos básicos: Organizar la información ● Menú ● Página ● Región ● Bloque ● Plantilla
  • 14. Conceptos básicos: Gestión de usuarios ● Usuario ● Perfil ● Rol ● Permiso
  • 16. Programación estructurada, objetos en Drupal 8. ● Todas las peticiones se reciben en index.php (mod rewrite) URLs del tipo index.php?q=esto/es/una/url ● Se carga el bootstrap ● Ejecución de entrada del menú ● Función de callback ● Salida se pasa al Theme, renderizado y envío de la respuesta al navegador
  • 18. Conceptos importante: Hooks ● Funciones que se ejecutan cuando un evento sucede ● Ejemplo: hook_init → cuando termina la carga de bootstrap ● Orden determinado por el peso del módulo que lo implementa ● Un hook de cada tipo por módulo ● Esquema de nombre: nombre_modulo_nombre_hook()
  • 19. Múltiples API’s: Algunas API de Drupal ● Form API: Formularios ● Database API: Base de datos ● Entity API: Nodos, términos, comentarios, … ● Field API: Campos de entidades ● Batch API: Operaciones por lotes ● Sistema de menú ● Variables persistentes ● Sistema de traducción ● ...
  • 21. ¿Cómo es un módulo? Estructura de directorios ● sites/all/modules/tipo-modulo/nombre_modulo ○ contrib ○ custom ○ features ○ patch ● Subdirectorios: ○ js ○ css ○ img ○ includes ○ tpl, translations, …
  • 22. ¿Cómo es un módulo? Ficheros ● nombre_modulo.info → Meta-información del módulo ● nombre_modulo.module → Implementación de hooks ● nombre_modulo.install → Hooks de instalación/desinstalación ● nombre_modulo.admin.inc → Configuración del módulo ● nombre_modulo.inc → Funciones que no son hooks ● nombre_modulo.views.inc → Hooks del módulo Views
  • 23. 3.3. Sistema de Plantillas
  • 24. Capa de presentación: Sistemas de plantillas ● Plantilla HTML con código PHP incrustado ● nombre_fichero.tpl.php ● Usado según nomenclatura del fichero ● Recibe un array de parámetros ($vars) ● Funciones de preprocesado
  • 25. Ejercicio: URL que recibe parámetro y lo muestra por pantalla ● Fichero info ● Fichero module ● Hook menu, definir la URL ● Hook permissions, definir permiso de acceso ● Hook theme, definir plantilla ● Definición de callback ● Interactuar con la base de datos ● Añadir Javascript y CSS ● Hook node view, responde a visualización de nodo
  • 27. Debugging ● Drush (no solo debug) ● Módulo devel ● Módulo coder ● xdebug ● xhprof ● Drupal for Firebug
  • 28. Rendimiento ● Memcache ● Apc / Opcache ● Varnish ● Authcache ● ApacheSolr ● Monitorización Sin olvidar: Buenas prácticas y Arquitectura adecuada
  • 29. Seguridad ● Seguridad en profundidad ● Drupal proporciona gran variedad de herramientas ● La importancia de la formación http://2013.drupalcamp.es/desarrollo-seguro-en-drupal
  • 31. Referencias Página oficial de Drupal https://drupal.org Documentación completa https://drupal.org/documentation Estándar de codificación https://drupal.org/coding-standards Drupal 7 Pro Development http://www.drupalbook.com High Performance Drupal https://drupal.org/node/2119971 Blog La Drupalera http://www.ladrupalera.com/drupal/ Api Drupal 7 https://api.drupal.org/api/drupal Drupal Modules http://drupalmodules.com/ Grupo Local de Sevilla https://groups.drupal.org/sevilla Canal vimeo http://vimeo.com/drupales
  • 33. Conclusión ● Cuestión de echarle ganas... y horas ● Velocidad, flexibilidad... ● ¿Lo mejor? La comunidad