34
Hello! This is Drupal! Emergya

¡This is drupal!

Embed Size (px)

Citation preview

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

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

¡Gracias!

¿Preguntas?