Upload
jose-luis-bellido
View
381
Download
2
Tags:
Embed Size (px)
Citation preview
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
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
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
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
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● ...
¿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
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
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
ReferenciasPágina oficial de Drupalhttps://drupal.org
Documentación completahttps://drupal.org/documentation
Estándar de codificaciónhttps://drupal.org/coding-standards
Drupal 7 Pro Developmenthttp://www.drupalbook.com
High Performance Drupalhttps://drupal.org/node/2119971
Blog La Drupalerahttp://www.ladrupalera.com/drupal/
Api Drupal 7 https://api.drupal.org/api/drupal
Drupal Moduleshttp://drupalmodules.com/
Grupo Local de Sevillahttps://groups.drupal.org/sevilla
Canal vimeohttp://vimeo.com/drupales
ReferenciasEjemplos completoshttps://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