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?

¡This is drupal!

  • 1.
  • 2.
    Sobre nosotros La DrupaleraAED Grupo Local Sevilla José Luis Bellido @jose_lakatos Nesta Guerrero @Nesta_
  • 3.
    ¿Qué vamos aver? ● Introducción ● Conceptos básicos ● Desarrollo: extendiendo Drupal ● Debugging, rendimiento y seguridad ● Referencias
  • 4.
  • 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 unatarea imposible..
  • 9.
    Pero solo escuestión de echarle ganas
  • 10.
  • 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: Sistemade publicación ● Tipo de contenido ● Campos ● Nodo ● Comentario ● Taxonomía
  • 13.
    Conceptos básicos: Organizarla información ● Menú ● Página ● Región ● Bloque ● Plantilla
  • 14.
    Conceptos básicos: Gestiónde usuarios ● Usuario ● Perfil ● Rol ● Permiso
  • 15.
  • 16.
    Programación estructurada, objetosen 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
  • 17.
  • 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: AlgunasAPI 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 ● ...
  • 20.
  • 21.
    ¿Cómo es unmó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 unmó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 dePlantillas
  • 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 recibepará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
  • 26.
  • 27.
    Debugging ● Drush (nosolo 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 enprofundidad ● Drupal proporciona gran variedad de herramientas ● La importancia de la formación http://2013.drupalcamp.es/desarrollo-seguro-en-drupal
  • 30.
  • 31.
    Referencias Página oficial deDrupal 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
  • 32.
  • 33.
    Conclusión ● Cuestión deecharle ganas... y horas ● Velocidad, flexibilidad... ● ¿Lo mejor? La comunidad
  • 34.