Curso CDA: Arquitectura Drupal

44
CURSO DE ADMINISTRACIÓN AVANZADA E DESENVOLVEMENTO DE DRUPAL 8 - 12 setembro 2014 – Santiago de Compostela TEMA 1: Arquitectura Drupal

description

Drupal Architecture

Transcript of Curso CDA: Arquitectura Drupal

Page 1: Curso CDA: Arquitectura Drupal

CURSO DE ADMINISTRACIÓN AVANZADA E DESENVOLVEMENTO DE DRUPAL

8 - 12 setembro 2014 – Santiago de Compostela

TEMA 1: Arquitectura Drupal

Page 2: Curso CDA: Arquitectura Drupal

Esta obra fue creada por Alberto Permuy Leal, y está disponible bajo una licencia Reconocimiento-CompartirIgual 3.0 http://creativecommons.org/licenses/by-sa/3.0/deed.es_ES

Usted es libre de:

Copiar, distribuir y comunicar públicamente la obra

Hacer obras derivadas

Bajo las condiciones siguientes:

Reconocimiento - Debe reconocer los créditos de la obra de la manera especificada por el autor o licenciador (pero no de una manera que sugiera que tiene su apoyo o apoyan el uso que hace de su obra).

Compartir bajo la misma licencia - Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta.

© 2014 - CIXUG

Page 3: Curso CDA: Arquitectura Drupal
Page 4: Curso CDA: Arquitectura Drupal

● introdución, instalación e profiles ● drush, alias● rendemento e seguridade● api ● proxecto

Mixed emotions

Page 5: Curso CDA: Arquitectura Drupal
Page 6: Curso CDA: Arquitectura Drupal

CURSO DRUPAL 7 AVANZADO

DRUPAL

● Que é Drupal● Pila de tecnoloxía● O núcleo● Interface administrativa● Módulos, bloques, temas e nodos● hooks● Estrutura de arquivos● Instalación● Drupal profiles

Page 7: Curso CDA: Arquitectura Drupal

CURSO DRUPAL 7 AVANZADO – ARQUITECTURA DRUPAL

QUE É DRUPAL

● Drupal emprégase para crear sitios web● Software modular e de código aberto● Excelente exemplo de software libre colaborativo● Drupal.org : 27.447 módulos, 2.022 temas, 34.420 desenvolvedores● Incorpora función básicas(core) e engadidas(módulos contribuidos)● Drupal está deseñado para separar deseño e administración

Page 8: Curso CDA: Arquitectura Drupal

https://www.drupal.org

Page 9: Curso CDA: Arquitectura Drupal

CURSO DRUPAL 7 AVANZADO – ARQUITECTURA DRUPAL

USOS DRUPAL

● Portais públicos: OpenPublic● Xornais : OpenPublish● Intranets : OpenAtrium● Redes sociais: Drupal Commons● Sitios personais : Drupal.org + Temas contribuidos● Comercio electrónico : Drupal Commerce

https://www.drupal.org/project/project_distribution

Page 10: Curso CDA: Arquitectura Drupal

CURSO DRUPAL 7 AVANZADO – ARQUITECTURA DRUPAL

SEGURIDADE EN DRUPAL

● Drupal Security Team● Consello: Suscrición ás roldas de correo de seguridade ● É máis seguro Drupal que outros proxectos?● O 90% das vulnerabilidades son responsabilidades dos creadores do sitio

https://www.drupal.org/security-teamhttps://www.drupal.org/securityhttps://www.drupal.org/security/secure-configurationhttps://groups.drupal.org/securityhttps://www.drupal.org/writing-secure-code

Page 11: Curso CDA: Arquitectura Drupal

CURSO DRUPAL 7 AVANZADO – ARQUITECTURA DRUPAL

PILA DE TECNOLOXÍA DRUPAL

Linguaxe: : PHP

Capa abstración de base de datos

SBGD : MySQL, PostgreSQL, SQLiteServidor web : Apache, Nginx, IIS...Sistema operativo : GNU/Linux, OSX, Solaris, BSD, Windows

Page 12: Curso CDA: Arquitectura Drupal

CURSO DRUPAL 7 AVANZADO – ARQUITECTURA DRUPAL

PILA DE TECNOLOXÍA DRUPAL II

● O sistema operativo é indiferente para Drupal● Veremos como Linux/Unix facilita moi o traballo como desenvolvedores● O servidor web máis empregado é Apache● Por iso se inclue .htaccess no paquete oficial Drupal.● API de base de datos orientada a obxectos● Escrito en PHP. Estándares estrictos: Coding Standards● Versión mínima PHP 5.2

https://www.drupal.org/node/318https://github.com/perusio/drupal-with-nginx

Page 13: Curso CDA: Arquitectura Drupal

CURSO DRUPAL 7 AVANZADO – ARQUITECTURA DRUPAL

O NÚCLEO DE DRUPAL

● Estructura lixeira dispoñible en Drupal.org● Establece as funcións básicas do sistema● Hooks para interactuar co core

Page 14: Curso CDA: Arquitectura Drupal

CURSO DRUPAL 7 AVANZADO – ARQUITECTURA DRUPAL

CAPA ADMINISTRATIVA DRUPAL

● Integración co resto do sitio● A maioría de funcións son accesibles dende o menú administrativo● E preciso acceder, de inicio, como Administrador● 100% personalizable

Page 15: Curso CDA: Arquitectura Drupal

CURSO DRUPAL 7 AVANZADO – ARQUITECTURA DRUPAL

MODULOS EN DRUPAL

● A arquitectura de Drupal é modular● Cada funcionalidade está incluida nun módulos● Para engadir funcións a un sitio web Drupal activamos ou desactivamos

módulos● Os módulos poden engadir comportamentos(p.e: envio emails)● A estrutura que permite invocar estos comportamento son os hooks

Page 16: Curso CDA: Arquitectura Drupal

CURSO DRUPAL 7 AVANZADO – ARQUITECTURA DRUPAL

MODULOS EN DRUPAL II

● Orixe : Drupal.org

https://www.drupal.org/project/views

Page 17: Curso CDA: Arquitectura Drupal

CURSO DRUPAL 7 AVANZADO – ARQUITECTURA DRUPAL

HOOKS EN DRUPAL

● Eventos internos de Drupal, tamén chamados “retrochamadas”● Permiten unirse ao resto do que sucede en Drupal● Exemplo:

● Inicio de sesión en Drupal desencadenda hook_user_login● Neste momento invocaránse tódalas funcións que cumplan a

convención : nome_modulo + nome_hook● locale_user_login() => configuración rexional● osl_user_login() => comportamento 'custom' para o módulo OSL

https://api.drupal.org/api/drupal/includes!module.inc/group/hooks/7

Page 18: Curso CDA: Arquitectura Drupal

CURSO DRUPAL 7 AVANZADO – ARQUITECTURA DRUPAL

TEMAS EN DRUPAL

● En Drupal a capa de temas é a encargada de crear HTML que recibirá o navegador.

● O motor de plantillas empregado por Drupal 7 é PHPTemplate● En Drupal 8 o motor de plantilla é Twig● Plantillas : separan o contido e o marcado HTML● É moi sinxelo mudar o aspecto dun sitio Drupal

● CSS : identificar as clases e sobreescribilas● https://www.drupal.org/project/css_injector

● Opción axeitada: usar arquivos de plantillas

Page 19: Curso CDA: Arquitectura Drupal

CURSO DRUPAL 7 AVANZADO – ARQUITECTURA DRUPAL

NODOS EN DRUPAL

● En Drupal os tipos de contido son se obteñen dun único tipo base: nodo● Páxinas, blogs ou recetas comparten estrutura base● Este enfoque ten unha ventaxa: entidades extensibles● Os programadores/as de módulos poden engadir novas funcionalidades

sen depender do tipo de contido de nodo.● Tódolos nodos comparten un conxunto básico de propiedades :

● nid: identificador único do nodo● uid: identificador único do usuario “creador” do nodo● created : data en formato unixtime de alta do nodo.

● A interfaz administrativa dispón dunha pantalla de edición destas propiedades.

https://www.drupal.org/documentation/modules/node

Page 20: Curso CDA: Arquitectura Drupal

CURSO DRUPAL 7 AVANZADO – ARQUITECTURA DRUPAL

CAMPOS EN DRUPAL

● En Drupal o contido está formado por campos individuais● Un título dun nodo é un campo.● Podemos crear e usar tantos campos como se necesiten para personalizar

un tipo de nodo● checkbox● date● text● textarea● referencias a outros tipos de contido ou clasificacións(Taxonomía)

● Por suposto, temos á nosa disposición en Drupal.org moitos módulos que engaden novos tipos de campos

● O API de Drupal permite extender os campos dun xeito sinxelo e sen apenas escribir código

https://www.drupal.org/project/email

https://www.drupal.org/project/field_nif

Page 21: Curso CDA: Arquitectura Drupal

CURSO DRUPAL 7 AVANZADO – ARQUITECTURA DRUPAL

BLOQUES EN DRUPAL

● Un bloque é a información que pode habilitar ou deshabilitar en calquera ubicación dunha plantilla de un sitio web construido con Drupal.

● Exemplo: Bloque que mostrar o número de usuarios activos● Os bloque son configurables, tanto na posición, contido, permisos...● A configuración e alta de novos bloques realízase dende a capa

administrativa de Drupal● O API de Drupal permite extender e crear bloques dun xeito sinxelo e sen

apenas escribir código

https://www.drupal.org/documentation/modules/block

Page 22: Curso CDA: Arquitectura Drupal

CURSO DRUPAL 7 AVANZADO – ARQUITECTURA DRUPAL

SISTEMA DE ARQUIVOS EN DRUPAL

● includes : Contén as bibliotecas de funcións comúns usadas en Drupal● misc: Almacena Javascript, iconas e imáxenes dunha instalación estándar de

Drupal● modules: Contén os módulos básicos, cada un nun directorio propio. NON

MODIFICAR NIN ALTERAR: NUNCA!● profiles: Contén os distintos perfiles de instalación dun sitio● scripts: Contén secuencias de comandos para comprobar a sintaxis, limpar

código...● sites: Contén as nosas modificacións propias de Drupal: módulos, temas e

librerías.● sites/default/files: Instalación base de Drupal predeterminada.● themes: Contén os motores de plantillas e os temas predeterminados de Drupal.

Os temas adicionais descargarémolos en sites/all/themes● cron.php: Arquivo que se usa para executar tarefas periódicas como por exemplo

rutinas de mantemento de bases de datos.● index.php: Punto principal de entrada de solicitudes.● install.php: Punto principal de entrada do instalador de Drupal● update.php: Actualiza os esquema de base de datos tras unha actualización.● robots.txt: implementación predeterminada do estándar de exclusión de robots.● xmlrpc.php: recibe solicitude XML-RPC. Non é necesario se non se habilita os

servizo.

Page 23: Curso CDA: Arquitectura Drupal

CURSO DRUPAL 7 AVANZADO – ARQUITECTURA DRUPAL

Page 24: Curso CDA: Arquitectura Drupal
Page 25: Curso CDA: Arquitectura Drupal

CONFIGURACIÓN ENTORNO

● Comprobación do entorno● admin/reports/status● admin/reports/updates● admin/reports/dblog

● settings.php● cron

Tip: cron_control elysia_cron

Page 26: Curso CDA: Arquitectura Drupal

DESACTIVAR MÓDULOS CORE NON NECESARIOS

● overlay● dashboard● help● (...)● ¿update manager?

Page 27: Curso CDA: Arquitectura Drupal

INSTALACIÓN MÓDULOS CONTRIBUIDOS

● backup_migrate● devel ● dif● drupalforfirebug● environment_indicator● module_filter● features● smtp

Page 28: Curso CDA: Arquitectura Drupal

CONSIDERACIONS FINAIS

● Backup● Automatizar tarefas

● backup_migrate && drush● tar-mysqldump

● Monitorización

Page 29: Curso CDA: Arquitectura Drupal

1Exercicio

cursos.cixug.es

Page 30: Curso CDA: Arquitectura Drupal

¿DISTRIBUCIÓNS?

● Unha distribución é unha copia completa de Drupal, includo o core, que inclue software adicional:

● temas● tódulos● librarias● perfiles de instalación

Page 31: Curso CDA: Arquitectura Drupal

TIPOS DE DISTRIBUCIÓNS

● Solucións completas para escenarios específicos● Quick start tools para desenvolvedores

Page 32: Curso CDA: Arquitectura Drupal

COMPOÑENTES DISTRIBUCIÓN

● Drupal Core● Módulos core e contribuídos. Temas● Módulos personalizados, tema e features● Perfiles de instalación

Page 33: Curso CDA: Arquitectura Drupal

ESCENARIOS DE USO DISTRIBUCIÓN

● Avaliar Drupal● Demo Drupal● Aprender Drupal● Quick Building

Page 34: Curso CDA: Arquitectura Drupal

¿PERFIL DE INSTALACION?

● Un perfil de instalación define os pasos que se executan no proceso de instalación de Drupal

● Podemos configurar de xeito sinxelo configuracións complexas(módulos, temas e arquivos de configuración)

● Usaremos un perfil de instalación nunha instalación limpa de Drupal, non podemos usar un perfil de instalación nunha instalación existente.

Page 35: Curso CDA: Arquitectura Drupal

PERFILES & DISTRIBUCIÓNS

● Conxunto de módulos e/ou temas que se configuran de xeito predeterminado nunha instalación de Drupal.

● Caso típico de perfil é a instalación de Drupal. Podemos elixir entre minimal ou standard

● Axuda a axilizar o inicio de proxecto● A instalación base de Drupal carece de módulos imprescindibles para o

desenvolvemento.● P.E: devel ou views

Page 36: Curso CDA: Arquitectura Drupal

PERFILES & DISTRIBUCIÓNS II

● Arquivos profile Drupal● .info : Información básica do perfil● .profile: Definiremos tarefas a executar no proceso de instalación● .install : Implementación do hook_install● /modules: Módulos a incluir no perfil● /themes: Temas a incluir no perfil● /translation: Arquivos .po de idiomas https://localize.drupal.org/● /libraries: Librarías a incluir no perfil

Page 37: Curso CDA: Arquitectura Drupal

PERFILES & DISTRIBUCIÓNS III

● Conten información básica que precisa o núcleo de Drupal para identificar e definir atributos clave :

● Nome do perfil de instalación● Versión do núcleo de Drupal compatible co perfil● Lista de dependencias(módulos) necesarias● Arquivo .profile do perfile

Arquivo .info

Page 38: Curso CDA: Arquitectura Drupal

PERFILES & DISTRIBUCIÓNS IV

Exemplo arquivo .info

name = Oficina Software Libre http://osl.cixug.es/description = Perfil de instalacion 01version = VERSIONcore = 7.x;dependencies[] = blockdependencies[] = color(..);Modulos customdependencies[] = views

Page 39: Curso CDA: Arquitectura Drupal

PERFILES & DISTRIBUCIÓNS V

● Executa hook_form_formname_alter● Podemos comenzar con este arquivo en blanco.

Arquivo .profile

Page 40: Curso CDA: Arquitectura Drupal

PERFILES & DISTRIBUCIÓNS VI

Exemplo arquivo .profile

<?php/*** @file* Enables modules and site configuration for a standard site installation.*//*** Implements hook_form_FORM_ID_alter() for install_configure_form().** Allows the profile to alter the site configuration form.*/function osl1_form_install_configure_form_alter(&$form, $form_state) {// Pre-populate the site name with the server name.$form['site_information']['site_name']['#default_value'] = 'osl1.cixug.es';}

Page 41: Curso CDA: Arquitectura Drupal

PERFILES & DISTRIBUCIÓNS VII

● Define e establece características, funcións, variables e opcións de configuración.

● .install determina:● Formatos de entrada que se van definir e habilitar.● Bloques que se van a habilitar e asignar ás rexións.● Tipos de contidos que se van a crear e habilitar.● Campos que se van a crear e habilitar.● Permisos que se asignan aos administradores do sitio.● Funcións que se crean.● Tema que se habilita como activo.

Arquivo .install

Tip: Revisar o profile standar dunha instalación limpa de Drupal 7 é un bo comezo

Page 42: Curso CDA: Arquitectura Drupal

PERFILES & DISTRIBUCIÓNS VIII

Exemplo arquivo .install

$enable = array('theme_default' => 'bootstrap_business','admin_theme' => 'seven',//'zen');theme_enable($enable);foreach ($enable as $var => $theme) {if (!is_numeric($var)) {variable_set($var, $theme);}}// Disable the default Bartik themetheme_disable(array('bartik'));

Page 43: Curso CDA: Arquitectura Drupal
Page 44: Curso CDA: Arquitectura Drupal

2Exercicio

cursos.cixug.es