4. Mixed emotions
● introdución, instalación e profiles
● drush, alias
● rendemento e seguridade
● api
● proxecto
6. 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
7. 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
10. 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-team
https://www.drupal.org/security
https://www.drupal.org/security/secure-configuration
https://groups.drupal.org/security
https://www.drupal.org/writing-secure-code
11. CURSO DRUPAL 7 AVANZADO – ARQUITECTURA DRUPAL
PILA DE TECNOLOXÍA DRUPAL
Linguaxe: : PHP
Capa abstración de base de datos
SBGD : MySQL, PostgreSQL, SQLite
Servidor web : Apache, Nginx, IIS...
Sistema operativo : GNU/Linux, OSX, Solaris, BSD, Windows
12. 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/318
https://github.com/perusio/drupal-with-nginx
13. 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
14. 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
15. 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
16. CURSO DRUPAL 7 AVANZADO – ARQUITECTURA DRUPAL
MODULOS EN DRUPAL II
● Orixe : Drupal.org
https://www.drupal.org/project/views
17. 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
18. 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
19. 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
20. 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/field_nif
https://www.drupal.org/project/email
21. 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
22. 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.
30. ¿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
31. TIPOS DE DISTRIBUCIÓNS
● Solucións completas para escenarios específicos
● Quick start tools para desenvolvedores
32. COMPOÑENTES DISTRIBUCIÓN
● Drupal Core
● Módulos core e contribuídos. Temas
● Módulos personalizados, tema e features
● Perfiles de instalación
33. ESCENARIOS DE USO DISTRIBUCIÓN
● Avaliar Drupal
● Demo Drupal
● Aprender Drupal
● Quick Building
34. ¿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.
35. 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
36. 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
37. PERFILES & DISTRIBUCIÓNS III
Arquivo .info
● 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
38. PERFILES & DISTRIBUCIÓNS IV
Exemplo arquivo .info
name = Oficina Software Libre http://osl.cixug.es/
description = Perfil de instalacion 01
version = VERSION
core = 7.x
;
dependencies[] = block
dependencies[] = color
(..)
;Modulos custom
dependencies[] = views
39. PERFILES & DISTRIBUCIÓNS V
Arquivo .profile
● Executa hook_form_formname_alter
● Podemos comenzar con este arquivo en blanco.
40. 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';
}
41. PERFILES & DISTRIBUCIÓNS VII
Arquivo .install
● 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.
Tip: Revisar o profile standar dunha instalación limpa de Drupal 7 é un bo comezo
42. 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 theme
theme_disable(array('bartik'));