Post on 07-Dec-2014
description
CURSO DE ADMINISTRACIÓN AVANZADA E DESENVOLVEMENTO DE DRUPAL
8 - 12 setembro 2014 – Santiago de Compostela
TEMA 1: 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
● introdución, instalación e profiles ● drush, alias● rendemento e seguridade● api ● proxecto
Mixed emotions
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
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
https://www.drupal.org
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
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
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
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
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
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
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
CURSO DRUPAL 7 AVANZADO – ARQUITECTURA DRUPAL
MODULOS EN DRUPAL II
● Orixe : Drupal.org
https://www.drupal.org/project/views
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
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
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
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
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
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.
CURSO DRUPAL 7 AVANZADO – 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
DESACTIVAR MÓDULOS CORE NON NECESARIOS
● overlay● dashboard● help● (...)● ¿update manager?
INSTALACIÓN MÓDULOS CONTRIBUIDOS
● backup_migrate● devel ● dif● drupalforfirebug● environment_indicator● module_filter● features● smtp
CONSIDERACIONS FINAIS
● Backup● Automatizar tarefas
● backup_migrate && drush● tar-mysqldump
● Monitorización
1Exercicio
cursos.cixug.es
¿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
TIPOS DE DISTRIBUCIÓNS
● Solucións completas para escenarios específicos● Quick start tools para desenvolvedores
COMPOÑENTES DISTRIBUCIÓN
● Drupal Core● Módulos core e contribuídos. Temas● Módulos personalizados, tema e features● Perfiles de instalación
ESCENARIOS DE USO DISTRIBUCIÓN
● Avaliar Drupal● Demo Drupal● Aprender Drupal● Quick Building
¿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.
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
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
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
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
PERFILES & DISTRIBUCIÓNS V
● Executa hook_form_formname_alter● Podemos comenzar con este arquivo en blanco.
Arquivo .profile
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';}
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
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'));
2Exercicio
cursos.cixug.es