This slides are about what is drupal? and why you should use drupal. The target for this slides are students of last courses of web apps development.
This slides was created by:
@keilovecraft
@Nesta_
This slides are based on http://www.slideshare.net/zekivazquez/taller-drupal-jornadas-software-libre-uca (by @RabbitLair)
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
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
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