SlideShare una empresa de Scribd logo
Arquitectura de proyectos
Drupal
Ramon Vilar Gavaldà
QUIÉN SOY
●

Socio fundador de Ymbra

●

Desarrollador Drupal

●

Miembro activo de la
comunidad drupalera:
●

Ramon Vilar Gavaldà

●

http://ymbra.com/blogs/ramon
http://twitter.com/rvilar

●

Presidente de Drupal.cat
Administrador de la
traducción catalana
Eventos, parches...

http://drupal.org/user/293298
2
ÍNDICE
01. DESARROLLO TRADICIONAL EN DRUPAL
02.

3
DESARROLLO
TRADICIONAL EN
DRUPAL
4
DESARROLLO TRADICIONAL EN
DRUPAL (I)
●

Aunque estemos enamorados de él, debemos
aceptarlo: Drupal, a día de hoy, tiene un
problema!

Código

Ficheros

Configuración
Contenido
Base de datos
5
DESARROLLO TRADICIONAL EN
DRUPAL (II)
●

●

●

●

Cómo nos lo hacemos para hacer un proyecto
en grupo?
Cómo podemos mantener el proyecto
versionado en un sistema de control de
versiones?
Cómo hacemos los pasos entre entornos? Y el
paso a producción?
Cómo la gente, y los proyectos, podían
sobrevivir hasta ahora?
6
DESARROLLO TRADICIONAL EN
DRUPAL (III)
●

Posibles soluciones:
●

El tradicional papel y lápiz... grrrr!!

●

Algo un poco menos caótico: desarrollo de módulo
–

–
–
–
–

Hacer un módulo que cree su tipo de contenido, con sus
campos, sus características, sus funciones de
actualización,...
Ah, y exportemos sus vistas...
Ah, y cree sus taxonomías y sus menús...
Y si tiene más chicha, pues también se la ponemos...
Ufff!
7
DESARROLLO TRADICIONAL EN
DRUPAL (y IV)
●

●

●

Seamos claros: el lápiz y el papel no se puede
considerar herramienta tecnológica.
Miremos qué herramientas nos ofrece la
comunidad y cuáles se están convirtiendo en
un estándar de facto.
Si no era así, a partir de ahora, el horizonte de
Drupal se os va a colocar un poco más lejos.

8
HERRAMIENTAS PARA
DESARROLLO
PROFESIONAL

9
HERRAMIENTAS PARA DESARROLLO
PROFESIONAL
●

Cosas que comentaremos aquí:
●

Drush

●

Features

●

Profiles

●

Drush.make

●

Git

10
DRUSH:
DRUPAL SHELL

11
DRUSH
●

●

Esto va a ser rápido... Drush es OBLIGADO! Y
punto!
Para más información:
●

http://drupal.org/project/drush

●

Drush User's Guide http://ves.cat/boPl

12
FEATURES:
TODO A CÓDIGO
13
FEATURES: TODO A CÓDIGO (I)
●

●

Lo que tenemos claro es que tenemos que
pasar toda la configuración y sus definiciones a
código.
Y qué ganamos?
●
●

Podemos resolver los conflictos (trabajo en grupo)

●

Separamos contenido de configuración

●

●

Podemos versionar el código

Facilitamos el paso entre entornos

Módulos obligatorios: Strongarm y Diff
14
FEATURES: TODO A CÓDIGO (II)
●

●

Crear un feature no tiene secreto: dispone de
una UI muy intuitiva

Y también de integración con drush
15
FEATURES: TODO A CÓDIGO (III)
●

Antes de empezar, hagamos un pequeño paso
para el programador, pero un gran paso para el
mantenedor: organicemos los directorios!
●

/contrib

●

/custom

●

/features

16
FEATURES: TODO A CÓDIGO (IV)
●

Al empezar un proyecto, tenemos que tener
claro qué funcionalidades tendrá

Funcionalidad

Feature

N tipos de contenido
● M campos
● O vistas
● P variables
● Contextos
● ...
●

17
FEATURES: TODO A CÓDIGO (V)
●

●

●

Un feature lo podemos hacer tan genérico cómo
queramos y luego crear otros que lo
complementen.
Por ejemplo, podemos crear un feature que sea
una noticia básica y luego crear otro feature que
tenga cómo dependencia este y sólo le añada,
por ejemplo, la capacidad de tener comentarios.
No tengamos miedo en hacer features pequeños
y jugar con las dependencias... pero no nos
pasemos!
18
FEATURES: TODO A CÓDIGO (VI)
●

●

●

●

Es normal tener algún feature que no tenga
ningún tipo de funcionalidad, sino que sólo nos
sirva para exportar configuración y/o
parametrización del sistema
Es el llamado feature_sitewide o
sitewide_config
Este nos puede servir, por ejemplo, para exportar
nuestros formatos de entrada, menús,...
Otro concepto es el Controller Feature: “One
feature to rule them all” (Nuvole)
19
FEATURES: TODO A CÓDIGO (VII)
●

●

●

●

●

●

Funcionalidad = Feature = ... = Módulo? Por qué no?
Normalmente cuando queremos encapsular una funcionalidad,
no sólo queremos encapsular su configuración, sino también
algún comportamiento JS asociado, estilos, plantillas, etc.
Cuando creamos un feature nos crea un archivo llamado
feature-name.module
Ese fichero es de libre modificación (sólo debemos respetar el
include)
Podemos crear unidades de desarrollo reutilizables en otros
proyectos a partir de nuestros features
Somos libres de implementar nuestros hooks
20
FEATURES: TODO A CÓDIGO (y VIII)
●

●

●

●
●

Y hasta podemos añadir su propia plantilla
node-slideshow.tpl.php en el módulo
Sólo tenemos que añadir nuestro módulo al
theme registry de Drupal: http://ves.cat/bazN
Y con todo esto conseguimos tener módulos
reutilizables para otros proyectos.
Mola, no?
Para más información, presentación de
DrupalDay 2012 http://ves.cat/boTD
21
PROFILES:
UNA HERRAMIENTA DE
DESARROLLO
22
PROFILES: UNA HERRAMIENTA DE
DESARROLLO (I)
●

●

●

En Drupal 7 los profiles pasan a ser “módulos”
con esteroides.
Si son módulos, podemos añadirles funciones y
hooks, sin problemas, aprovechando la
potencia que esto nos permite
Por qué no aprovechar esto y utilizar los
profiles para guiar nuestros desarrollos?

23
PROFILES: UNA HERRAMIENTA DE
DESARROLLO (y II)
●

●

●

●

Un proyecto = un profile
En el fichero .info definimos los módulos (y
features) que se deben activar para nuestro proyecto
Usar profiles facilita el despliegue en entornos y la
posibilidad de integrar con un sistema de integración
continua
Podemos usar funciones hook_upate() para, por
ejemplo, automatizar tareas en actualizaciones del
proyecto: habilitar/deshabilitar módulos, etc.

24
DRUSH MAKE:
EL ÍNDICE DE NUESTRO
PROYECTO

25
DRUSH MAKE: EL ÍNDICE (I)
●

●

●

●

●

Un desarrollo Drupal no consiste sólo en descargar
módulos, activarlos y usarlos.
Es común usar versiones en “desarrollo” (vía commit
de git por favor!), además de aplicar parches en
estos...
Y además usar también temas contribuidos cómo
base...
Y además, usar librerías que complementan algunos
módulos.
Cómo saber de qué está formado tu proyecto al cabo
de un tiempo?
26
DRUSH MAKE: EL ÍNDICE (II)
; Drush Make file
core = 7.x
api = 2
projects[drupal][type] = core
; MODULE
Sprojects[entityreference][version] = 1.0-rc5
projects[entityreference][subdir] = contrib
projects[i18nviews][subdir] = contrib
projects[i18nviews][download][type] = git
projects[i18nviews][download][url] = http://git.drupal.org/project/i18nviews.git
projects[i18nviews][download][revision] = 059e772ae25e925c33c0697bf37241a1e41b1a16
projects[l10n_update][version] = 1.0-beta3
projects[l10n_update][subdir] = contrib
projects[menu_block][version] = 2.3
projects[menu_block][subdir] = contrib
projects[menu_block][patch][1461254] = http://drupal.org/files/menu-block-language-1461254-1.patch
; THEMES
projects[omega][version] = 3.1
projects[omega][subdir] = contrib
; LIBRARIES
libraries[jquery.cycle][download][type] = file
libraries[jquery.cycle][download][url] = http://malsup.github.com/jquery.cycle.all.js
libraries[jquery.cycle][destination] = libraries

27
DRUSH MAKE: EL ÍNDICE (III)
●

Si seguimos este enfoque, un proyecto está
formado por:
●
●

●

●

●

1 perfil de instalación
1-N ficheros make con la definición de los módulos,
librerías, etc del proyecto
Una carpeta /modules/features con las
funcionalidades y la configuración del proyecto
Una carpeta /modules/custom con los módulos a
medida
Una carpeta /themes/custom con los temas a medida
28
DRUSH MAKE: EL ÍNDICE (y IV)
●

●

Si queremos instalar un nuevo módulo, lo
añadimos al fichero make y ya está...¿?
Debemos volver a ejecutar el makefile! No hay
problema...
#!/bin/bash
rm -rf modules/contrib
rm -rf themes/contrib
drush make --working-copy --no-core
--contrib-destination=. profile.make .
drush updatedb -y && drush cc all

●

Todo esto se puede automatizar vía CI
29
GIT:
CONTROL, CONTROL Y MÁS
CONTROL

30
GIT: CONTROL, CONTROL Y MÁS
CONTROL (I)
●

●

●

Utilizar un CVS se ha convertido en un
imprescindible hasta para proyectos de una
sola persona
Git, cómo ya sabéis, es el CVS que se usa
para mantener/gestionar el código de Drupal y
sus módulos
Si no conocéis Git, os animo/obligo a que
vayáis a la sesión de juampy: Git y Drupal
http://ves.cat/boTF
31
GIT: CONTROL, CONTROL Y MÁS
CONTROL (II)
●

●

Con lo aquí propuesto, en Git sólo tenemos la
carpeta del perfil del proyecto.
Está está formada por:
●

Archivos própios del perfil

●

Un archivo <profile>.make

●

Los features del proyecto

●

Los módulos personalizados

●

El tema
32
GIT: CONTROL, CONTROL Y MÁS
CONTROL (III)
●

El .gitignore del perfil es:
modules/*
!modules/custom
!modules/features
themes/*
!themes/custom
libraries/*

●

Qué sentido tendría tener los módulos o temas
contribuidos o las librerías en Git si ya está la
información en d.o?
33
GIT: CONTROL, CONTROL Y MÁS
CONTROL (y IV)
●

Recomendaciones de un programador que ha
sufrido...
●

●
●

●

Haz commits de cada unidad significativa. Si debes
volver a atrás te será más fácil y menos
impactante.
Usa/abusa de las ramas. Si están es por algo!
Tagea los estados en Git. Tarde o temprano vas a
querer saber cuál era el estado del código el día
que subiste a producción algo
Y mucho más!
34
LAST BUT NOT LEAST

35
PASO ENTRE ENTORNOS (I)
●

Quién de aquí ha hecho alguna vez un paso
entre entornos con lápiz y papel?

●

Venga no engañéis...

●

Venga...

●

…

●

Lo acepto, yo también lo he hecho!

●

Pero hoy en día ya “no” hay excusa...

36
PASO ENTRE ENTORNOS (y II)
●

●

●

Si tenemos toda nuestra configuración en
código, un paso entre entornos se puede volver
en una cosa “trivial”
“Simplemente” haciendo un git pull (de la
rama que queramos) + drush updb +
drush cc all podemos desplegar en otro
entorno
Usarlo, veréis cómo hay un antes y un después
y dormiréis más a gusto!
37
INTEGRACIÓN CONTINUA
●

●

●

●

Si tenemos todo a código, y además en Git, ya
no tenemos escusas para no usar un sistema
de integración continua
Hacer un sistema de despliegue automático es
mucho más fácil con esta arquitectura
Se nos terminan las escusas para no empezar
a usar Jenkins, por ejemplo
Hay una sesión por ahí que trata estas
palabrotas http://ves.cat/boTG
38
CONTACTO
Twitter: @rvilar
● Correo: ramon@ymbra.com
● Blog: http://ymbra.com/blogs/ramon
● Web: http://ymbra.com
●

Grácias a todos(as). ¿Preguntas?

39

Más contenido relacionado

La actualidad más candente

Exposicion GWT
Exposicion GWTExposicion GWT
Exposicion GWT
Jose Luis Dorao
 
Herramientas de visualización de datos
Herramientas de visualización de datosHerramientas de visualización de datos
Herramientas de visualización de datos
BBVA API Market
 
Frameworks y herramientas para la web del futuro
Frameworks y herramientas para la web del futuroFrameworks y herramientas para la web del futuro
Frameworks y herramientas para la web del futuro
BBVA API Market
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
Micael Gallego
 
Semana 1 Patrones de Diseño
Semana 1   Patrones de DiseñoSemana 1   Patrones de Diseño
Semana 1 Patrones de Diseño
Richard Eliseo Mendoza Gafaro
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
menttes
 
Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
Manuel Carrasco Moñino
 
Metodologia de Trabajo en Proyectos con Drupal
Metodologia de Trabajo en Proyectos con DrupalMetodologia de Trabajo en Proyectos con Drupal
Metodologia de Trabajo en Proyectos con Drupal
Ruben Teijeiro
 
Taller Drupal Php Conference
Taller Drupal Php ConferenceTaller Drupal Php Conference
Taller Drupal Php Conference
SEAT, S.A.
 
GWT y SmartGWT - Introducción
GWT y SmartGWT - IntroducciónGWT y SmartGWT - Introducción
GWT y SmartGWT - Introducción
VLASLOV
 
Dc salad
Dc saladDc salad
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event manager
Ivan Ortega
 
Desarrollo de Aplicaciones Web 2.0 con GWT
Desarrollo de Aplicaciones Web 2.0 con GWTDesarrollo de Aplicaciones Web 2.0 con GWT
Desarrollo de Aplicaciones Web 2.0 con GWT
Ingenieria Informatica Empresarial
 
Los mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalLos mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupal
SiteGround España
 
Presentación Multimedia - Django
Presentación Multimedia - DjangoPresentación Multimedia - Django
Presentación Multimedia - Django
Viviana Trujillo
 
Gwt II - trabajando con gwt
Gwt II - trabajando con gwtGwt II - trabajando con gwt
Gwt II - trabajando con gwt
Manuel Carrasco Moñino
 
Semana 7 Servicios Web REST con MongoDB final
Semana 7   Servicios Web REST con MongoDB finalSemana 7   Servicios Web REST con MongoDB final
Semana 7 Servicios Web REST con MongoDB final
Richard Eliseo Mendoza Gafaro
 
Programacion de una tienda virtual en Grails
Programacion de una tienda virtual en GrailsProgramacion de una tienda virtual en Grails
Programacion de una tienda virtual en Grails
Gabriel Bermudez
 
This is Drupal! (Basics)
This is Drupal! (Basics)This is Drupal! (Basics)
This is Drupal! (Basics)
Maria del Carmen Garcia
 

La actualidad más candente (19)

Exposicion GWT
Exposicion GWTExposicion GWT
Exposicion GWT
 
Herramientas de visualización de datos
Herramientas de visualización de datosHerramientas de visualización de datos
Herramientas de visualización de datos
 
Frameworks y herramientas para la web del futuro
Frameworks y herramientas para la web del futuroFrameworks y herramientas para la web del futuro
Frameworks y herramientas para la web del futuro
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 
Semana 1 Patrones de Diseño
Semana 1   Patrones de DiseñoSemana 1   Patrones de Diseño
Semana 1 Patrones de Diseño
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
 
Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
 
Metodologia de Trabajo en Proyectos con Drupal
Metodologia de Trabajo en Proyectos con DrupalMetodologia de Trabajo en Proyectos con Drupal
Metodologia de Trabajo en Proyectos con Drupal
 
Taller Drupal Php Conference
Taller Drupal Php ConferenceTaller Drupal Php Conference
Taller Drupal Php Conference
 
GWT y SmartGWT - Introducción
GWT y SmartGWT - IntroducciónGWT y SmartGWT - Introducción
GWT y SmartGWT - Introducción
 
Dc salad
Dc saladDc salad
Dc salad
 
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event manager
 
Desarrollo de Aplicaciones Web 2.0 con GWT
Desarrollo de Aplicaciones Web 2.0 con GWTDesarrollo de Aplicaciones Web 2.0 con GWT
Desarrollo de Aplicaciones Web 2.0 con GWT
 
Los mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalLos mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupal
 
Presentación Multimedia - Django
Presentación Multimedia - DjangoPresentación Multimedia - Django
Presentación Multimedia - Django
 
Gwt II - trabajando con gwt
Gwt II - trabajando con gwtGwt II - trabajando con gwt
Gwt II - trabajando con gwt
 
Semana 7 Servicios Web REST con MongoDB final
Semana 7   Servicios Web REST con MongoDB finalSemana 7   Servicios Web REST con MongoDB final
Semana 7 Servicios Web REST con MongoDB final
 
Programacion de una tienda virtual en Grails
Programacion de una tienda virtual en GrailsProgramacion de una tienda virtual en Grails
Programacion de una tienda virtual en Grails
 
This is Drupal! (Basics)
This is Drupal! (Basics)This is Drupal! (Basics)
This is Drupal! (Basics)
 

Similar a Arquitectura de proyectos Drupal

Desarrollo y arquitectura de proyectos con Features
Desarrollo y arquitectura de proyectos con FeaturesDesarrollo y arquitectura de proyectos con Features
Desarrollo y arquitectura de proyectos con Features
Ymbra
 
Drupal 7: mucho más que una nueva versión (para desarrolladores)
Drupal 7: mucho más que una nueva versión (para desarrolladores)Drupal 7: mucho más que una nueva versión (para desarrolladores)
Drupal 7: mucho más que una nueva versión (para desarrolladores)
Ymbra
 
Introduccion técnica a Drupal
Introduccion técnica a DrupalIntroduccion técnica a Drupal
Introduccion técnica a Drupal
Pedro Cambra
 
¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days
La Drupalera
 
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
Keopx
 
Drupal8 : novedades y nuevas funcionalidades
Drupal8 : novedades y nuevas funcionalidadesDrupal8 : novedades y nuevas funcionalidades
Drupal8 : novedades y nuevas funcionalidades
Alberto Permuy Leal
 
Introduccion drupal
Introduccion drupalIntroduccion drupal
Introduccion drupal
Danilo Domínguez
 
Programación de módulos para Drupal 7
Programación de módulos para Drupal 7Programación de módulos para Drupal 7
Programación de módulos para Drupal 7
Cristian Mamani
 
¡This is drupal!
¡This is drupal!¡This is drupal!
¡This is drupal!
Jose Luis Bellido
 
Cómo contribuir en tu día a día
Cómo contribuir en tu día a díaCómo contribuir en tu día a día
Cómo contribuir en tu día a día
Montaña Franco
 
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7
Keopx
 
Metodologia de Trabajo en Proyectos con Drupal
Metodologia de Trabajo en Proyectos con DrupalMetodologia de Trabajo en Proyectos con Drupal
Metodologia de Trabajo en Proyectos con Drupal
Rojomorgan
 
Drupalcamp 2014 reconstruir un medio digital idealista news
Drupalcamp 2014   reconstruir un medio digital idealista newsDrupalcamp 2014   reconstruir un medio digital idealista news
Drupalcamp 2014 reconstruir un medio digital idealista news
Martín .
 
Reconstruir un medio digital: idealista/news - Drupalcamp Spain 2014
Reconstruir un medio digital: idealista/news - Drupalcamp Spain 2014Reconstruir un medio digital: idealista/news - Drupalcamp Spain 2014
Reconstruir un medio digital: idealista/news - Drupalcamp Spain 2014
Rodrigo Alfaro
 
Introduccion a Drupal 6 e-ghost
Introduccion a Drupal 6 e-ghostIntroduccion a Drupal 6 e-ghost
Introduccion a Drupal 6 e-ghost
Keopx
 
Construyendo una red social con Drupal
Construyendo una red social con DrupalConstruyendo una red social con Drupal
Construyendo una red social con Drupal
Daniel Primo
 
[DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9
[DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9[DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9
[DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9
Keopx
 
CLASE 5 INTRODUCCION A FIGMA
CLASE 5 INTRODUCCION A FIGMACLASE 5 INTRODUCCION A FIGMA
CLASE 5 INTRODUCCION A FIGMA
Richard Eliseo Mendoza Gafaro
 
Drupal 7: mucho más que una nueva versión
Drupal 7: mucho más que una nueva versiónDrupal 7: mucho más que una nueva versión
Drupal 7: mucho más que una nueva versión
Ymbra
 
202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy
Manuel de la Peña Peña
 

Similar a Arquitectura de proyectos Drupal (20)

Desarrollo y arquitectura de proyectos con Features
Desarrollo y arquitectura de proyectos con FeaturesDesarrollo y arquitectura de proyectos con Features
Desarrollo y arquitectura de proyectos con Features
 
Drupal 7: mucho más que una nueva versión (para desarrolladores)
Drupal 7: mucho más que una nueva versión (para desarrolladores)Drupal 7: mucho más que una nueva versión (para desarrolladores)
Drupal 7: mucho más que una nueva versión (para desarrolladores)
 
Introduccion técnica a Drupal
Introduccion técnica a DrupalIntroduccion técnica a Drupal
Introduccion técnica a Drupal
 
¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days
 
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
 
Drupal8 : novedades y nuevas funcionalidades
Drupal8 : novedades y nuevas funcionalidadesDrupal8 : novedades y nuevas funcionalidades
Drupal8 : novedades y nuevas funcionalidades
 
Introduccion drupal
Introduccion drupalIntroduccion drupal
Introduccion drupal
 
Programación de módulos para Drupal 7
Programación de módulos para Drupal 7Programación de módulos para Drupal 7
Programación de módulos para Drupal 7
 
¡This is drupal!
¡This is drupal!¡This is drupal!
¡This is drupal!
 
Cómo contribuir en tu día a día
Cómo contribuir en tu día a díaCómo contribuir en tu día a día
Cómo contribuir en tu día a día
 
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7
DrupalCamp Spain 2014: Introducción al desarrollo de módulos en Drupal 7
 
Metodologia de Trabajo en Proyectos con Drupal
Metodologia de Trabajo en Proyectos con DrupalMetodologia de Trabajo en Proyectos con Drupal
Metodologia de Trabajo en Proyectos con Drupal
 
Drupalcamp 2014 reconstruir un medio digital idealista news
Drupalcamp 2014   reconstruir un medio digital idealista newsDrupalcamp 2014   reconstruir un medio digital idealista news
Drupalcamp 2014 reconstruir un medio digital idealista news
 
Reconstruir un medio digital: idealista/news - Drupalcamp Spain 2014
Reconstruir un medio digital: idealista/news - Drupalcamp Spain 2014Reconstruir un medio digital: idealista/news - Drupalcamp Spain 2014
Reconstruir un medio digital: idealista/news - Drupalcamp Spain 2014
 
Introduccion a Drupal 6 e-ghost
Introduccion a Drupal 6 e-ghostIntroduccion a Drupal 6 e-ghost
Introduccion a Drupal 6 e-ghost
 
Construyendo una red social con Drupal
Construyendo una red social con DrupalConstruyendo una red social con Drupal
Construyendo una red social con Drupal
 
[DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9
[DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9[DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9
[DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9
 
CLASE 5 INTRODUCCION A FIGMA
CLASE 5 INTRODUCCION A FIGMACLASE 5 INTRODUCCION A FIGMA
CLASE 5 INTRODUCCION A FIGMA
 
Drupal 7: mucho más que una nueva versión
Drupal 7: mucho más que una nueva versiónDrupal 7: mucho más que una nueva versión
Drupal 7: mucho más que una nueva versión
 
202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy
 

Más de Ymbra

Migrate, una herramienta de trabajo y desarrollo
Migrate, una herramienta de trabajo y desarrolloMigrate, una herramienta de trabajo y desarrollo
Migrate, una herramienta de trabajo y desarrollo
Ymbra
 
Field Types API: Field, widgets y formatters
Field Types API: Field, widgets y formattersField Types API: Field, widgets y formatters
Field Types API: Field, widgets y formatters
Ymbra
 
Distribuciones en Drupal
Distribuciones en DrupalDistribuciones en Drupal
Distribuciones en Drupal
Ymbra
 
Introducció al Git
Introducció al GitIntroducció al Git
Introducció al Git
Ymbra
 
Views 3: Qué hay de nuevo
Views 3: Qué hay de nuevoViews 3: Qué hay de nuevo
Views 3: Qué hay de nuevo
Ymbra
 
ELISAVA Beta. Cas d'èxit desenvolupat per Ymbra
ELISAVA Beta. Cas d'èxit desenvolupat per YmbraELISAVA Beta. Cas d'èxit desenvolupat per Ymbra
ELISAVA Beta. Cas d'èxit desenvolupat per Ymbra
Ymbra
 
Drupal 7 multilingüe: internacionalització i localització de llocs web
Drupal 7 multilingüe: internacionalització i localització de llocs webDrupal 7 multilingüe: internacionalització i localització de llocs web
Drupal 7 multilingüe: internacionalització i localització de llocs webYmbra
 
Desmitificant l'HTML5
Desmitificant l'HTML5Desmitificant l'HTML5
Desmitificant l'HTML5
Ymbra
 

Más de Ymbra (8)

Migrate, una herramienta de trabajo y desarrollo
Migrate, una herramienta de trabajo y desarrolloMigrate, una herramienta de trabajo y desarrollo
Migrate, una herramienta de trabajo y desarrollo
 
Field Types API: Field, widgets y formatters
Field Types API: Field, widgets y formattersField Types API: Field, widgets y formatters
Field Types API: Field, widgets y formatters
 
Distribuciones en Drupal
Distribuciones en DrupalDistribuciones en Drupal
Distribuciones en Drupal
 
Introducció al Git
Introducció al GitIntroducció al Git
Introducció al Git
 
Views 3: Qué hay de nuevo
Views 3: Qué hay de nuevoViews 3: Qué hay de nuevo
Views 3: Qué hay de nuevo
 
ELISAVA Beta. Cas d'èxit desenvolupat per Ymbra
ELISAVA Beta. Cas d'èxit desenvolupat per YmbraELISAVA Beta. Cas d'èxit desenvolupat per Ymbra
ELISAVA Beta. Cas d'èxit desenvolupat per Ymbra
 
Drupal 7 multilingüe: internacionalització i localització de llocs web
Drupal 7 multilingüe: internacionalització i localització de llocs webDrupal 7 multilingüe: internacionalització i localització de llocs web
Drupal 7 multilingüe: internacionalització i localització de llocs web
 
Desmitificant l'HTML5
Desmitificant l'HTML5Desmitificant l'HTML5
Desmitificant l'HTML5
 

Último

Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
MiguelAtencio10
 
mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
MiguelAtencio10
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
leia ereni
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
gisellearanguren1
 
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
AbrahamCastillo42
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
mantenimientocarbra6
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
KukiiSanchez
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
YashiraPaye
 
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDADEXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
AngelCristhianMB
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
larapalaciosmonzon28
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
Paola De la Torre
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
larapalaciosmonzon28
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
YaniEscobar2
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
cbtechchihuahua
 
Modo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdfModo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdf
ranierglez
 
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
codesiret
 
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
70244530
 
INFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIAINFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIA
renzocruz180310
 
El uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptxEl uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptx
jgvanessa23
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
NicandroMartinez2
 

Último (20)

Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
Mantenimiento de sistemas eléctricos y electrónicosarticles-241712_recurso_6....
 
mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
 
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
 
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDADEXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
EXAMEN DE TOPOGRAFIA RESUELTO-2017 CURSO DE UNIVERSIDAD
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
 
Modo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdfModo test refrigeradores y codigos de errores 2018 V2.pdf
Modo test refrigeradores y codigos de errores 2018 V2.pdf
 
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)
 
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdfPLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
PLAN DE MANTENMIENTO preventivo de un equipo de computo.pdf
 
INFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIAINFORMATICA Y TECNOLOGIA
INFORMATICA Y TECNOLOGIA
 
El uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptxEl uso de las TIC en la vida cotidiana.pptx
El uso de las TIC en la vida cotidiana.pptx
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
 

Arquitectura de proyectos Drupal

  • 2. QUIÉN SOY ● Socio fundador de Ymbra ● Desarrollador Drupal ● Miembro activo de la comunidad drupalera: ● Ramon Vilar Gavaldà ● http://ymbra.com/blogs/ramon http://twitter.com/rvilar ● Presidente de Drupal.cat Administrador de la traducción catalana Eventos, parches... http://drupal.org/user/293298 2
  • 5. DESARROLLO TRADICIONAL EN DRUPAL (I) ● Aunque estemos enamorados de él, debemos aceptarlo: Drupal, a día de hoy, tiene un problema! Código Ficheros Configuración Contenido Base de datos 5
  • 6. DESARROLLO TRADICIONAL EN DRUPAL (II) ● ● ● ● Cómo nos lo hacemos para hacer un proyecto en grupo? Cómo podemos mantener el proyecto versionado en un sistema de control de versiones? Cómo hacemos los pasos entre entornos? Y el paso a producción? Cómo la gente, y los proyectos, podían sobrevivir hasta ahora? 6
  • 7. DESARROLLO TRADICIONAL EN DRUPAL (III) ● Posibles soluciones: ● El tradicional papel y lápiz... grrrr!! ● Algo un poco menos caótico: desarrollo de módulo – – – – – Hacer un módulo que cree su tipo de contenido, con sus campos, sus características, sus funciones de actualización,... Ah, y exportemos sus vistas... Ah, y cree sus taxonomías y sus menús... Y si tiene más chicha, pues también se la ponemos... Ufff! 7
  • 8. DESARROLLO TRADICIONAL EN DRUPAL (y IV) ● ● ● Seamos claros: el lápiz y el papel no se puede considerar herramienta tecnológica. Miremos qué herramientas nos ofrece la comunidad y cuáles se están convirtiendo en un estándar de facto. Si no era así, a partir de ahora, el horizonte de Drupal se os va a colocar un poco más lejos. 8
  • 10. HERRAMIENTAS PARA DESARROLLO PROFESIONAL ● Cosas que comentaremos aquí: ● Drush ● Features ● Profiles ● Drush.make ● Git 10
  • 12. DRUSH ● ● Esto va a ser rápido... Drush es OBLIGADO! Y punto! Para más información: ● http://drupal.org/project/drush ● Drush User's Guide http://ves.cat/boPl 12
  • 14. FEATURES: TODO A CÓDIGO (I) ● ● Lo que tenemos claro es que tenemos que pasar toda la configuración y sus definiciones a código. Y qué ganamos? ● ● Podemos resolver los conflictos (trabajo en grupo) ● Separamos contenido de configuración ● ● Podemos versionar el código Facilitamos el paso entre entornos Módulos obligatorios: Strongarm y Diff 14
  • 15. FEATURES: TODO A CÓDIGO (II) ● ● Crear un feature no tiene secreto: dispone de una UI muy intuitiva Y también de integración con drush 15
  • 16. FEATURES: TODO A CÓDIGO (III) ● Antes de empezar, hagamos un pequeño paso para el programador, pero un gran paso para el mantenedor: organicemos los directorios! ● /contrib ● /custom ● /features 16
  • 17. FEATURES: TODO A CÓDIGO (IV) ● Al empezar un proyecto, tenemos que tener claro qué funcionalidades tendrá Funcionalidad Feature N tipos de contenido ● M campos ● O vistas ● P variables ● Contextos ● ... ● 17
  • 18. FEATURES: TODO A CÓDIGO (V) ● ● ● Un feature lo podemos hacer tan genérico cómo queramos y luego crear otros que lo complementen. Por ejemplo, podemos crear un feature que sea una noticia básica y luego crear otro feature que tenga cómo dependencia este y sólo le añada, por ejemplo, la capacidad de tener comentarios. No tengamos miedo en hacer features pequeños y jugar con las dependencias... pero no nos pasemos! 18
  • 19. FEATURES: TODO A CÓDIGO (VI) ● ● ● ● Es normal tener algún feature que no tenga ningún tipo de funcionalidad, sino que sólo nos sirva para exportar configuración y/o parametrización del sistema Es el llamado feature_sitewide o sitewide_config Este nos puede servir, por ejemplo, para exportar nuestros formatos de entrada, menús,... Otro concepto es el Controller Feature: “One feature to rule them all” (Nuvole) 19
  • 20. FEATURES: TODO A CÓDIGO (VII) ● ● ● ● ● ● Funcionalidad = Feature = ... = Módulo? Por qué no? Normalmente cuando queremos encapsular una funcionalidad, no sólo queremos encapsular su configuración, sino también algún comportamiento JS asociado, estilos, plantillas, etc. Cuando creamos un feature nos crea un archivo llamado feature-name.module Ese fichero es de libre modificación (sólo debemos respetar el include) Podemos crear unidades de desarrollo reutilizables en otros proyectos a partir de nuestros features Somos libres de implementar nuestros hooks 20
  • 21. FEATURES: TODO A CÓDIGO (y VIII) ● ● ● ● ● Y hasta podemos añadir su propia plantilla node-slideshow.tpl.php en el módulo Sólo tenemos que añadir nuestro módulo al theme registry de Drupal: http://ves.cat/bazN Y con todo esto conseguimos tener módulos reutilizables para otros proyectos. Mola, no? Para más información, presentación de DrupalDay 2012 http://ves.cat/boTD 21
  • 23. PROFILES: UNA HERRAMIENTA DE DESARROLLO (I) ● ● ● En Drupal 7 los profiles pasan a ser “módulos” con esteroides. Si son módulos, podemos añadirles funciones y hooks, sin problemas, aprovechando la potencia que esto nos permite Por qué no aprovechar esto y utilizar los profiles para guiar nuestros desarrollos? 23
  • 24. PROFILES: UNA HERRAMIENTA DE DESARROLLO (y II) ● ● ● ● Un proyecto = un profile En el fichero .info definimos los módulos (y features) que se deben activar para nuestro proyecto Usar profiles facilita el despliegue en entornos y la posibilidad de integrar con un sistema de integración continua Podemos usar funciones hook_upate() para, por ejemplo, automatizar tareas en actualizaciones del proyecto: habilitar/deshabilitar módulos, etc. 24
  • 25. DRUSH MAKE: EL ÍNDICE DE NUESTRO PROYECTO 25
  • 26. DRUSH MAKE: EL ÍNDICE (I) ● ● ● ● ● Un desarrollo Drupal no consiste sólo en descargar módulos, activarlos y usarlos. Es común usar versiones en “desarrollo” (vía commit de git por favor!), además de aplicar parches en estos... Y además usar también temas contribuidos cómo base... Y además, usar librerías que complementan algunos módulos. Cómo saber de qué está formado tu proyecto al cabo de un tiempo? 26
  • 27. DRUSH MAKE: EL ÍNDICE (II) ; Drush Make file core = 7.x api = 2 projects[drupal][type] = core ; MODULE Sprojects[entityreference][version] = 1.0-rc5 projects[entityreference][subdir] = contrib projects[i18nviews][subdir] = contrib projects[i18nviews][download][type] = git projects[i18nviews][download][url] = http://git.drupal.org/project/i18nviews.git projects[i18nviews][download][revision] = 059e772ae25e925c33c0697bf37241a1e41b1a16 projects[l10n_update][version] = 1.0-beta3 projects[l10n_update][subdir] = contrib projects[menu_block][version] = 2.3 projects[menu_block][subdir] = contrib projects[menu_block][patch][1461254] = http://drupal.org/files/menu-block-language-1461254-1.patch ; THEMES projects[omega][version] = 3.1 projects[omega][subdir] = contrib ; LIBRARIES libraries[jquery.cycle][download][type] = file libraries[jquery.cycle][download][url] = http://malsup.github.com/jquery.cycle.all.js libraries[jquery.cycle][destination] = libraries 27
  • 28. DRUSH MAKE: EL ÍNDICE (III) ● Si seguimos este enfoque, un proyecto está formado por: ● ● ● ● ● 1 perfil de instalación 1-N ficheros make con la definición de los módulos, librerías, etc del proyecto Una carpeta /modules/features con las funcionalidades y la configuración del proyecto Una carpeta /modules/custom con los módulos a medida Una carpeta /themes/custom con los temas a medida 28
  • 29. DRUSH MAKE: EL ÍNDICE (y IV) ● ● Si queremos instalar un nuevo módulo, lo añadimos al fichero make y ya está...¿? Debemos volver a ejecutar el makefile! No hay problema... #!/bin/bash rm -rf modules/contrib rm -rf themes/contrib drush make --working-copy --no-core --contrib-destination=. profile.make . drush updatedb -y && drush cc all ● Todo esto se puede automatizar vía CI 29
  • 30. GIT: CONTROL, CONTROL Y MÁS CONTROL 30
  • 31. GIT: CONTROL, CONTROL Y MÁS CONTROL (I) ● ● ● Utilizar un CVS se ha convertido en un imprescindible hasta para proyectos de una sola persona Git, cómo ya sabéis, es el CVS que se usa para mantener/gestionar el código de Drupal y sus módulos Si no conocéis Git, os animo/obligo a que vayáis a la sesión de juampy: Git y Drupal http://ves.cat/boTF 31
  • 32. GIT: CONTROL, CONTROL Y MÁS CONTROL (II) ● ● Con lo aquí propuesto, en Git sólo tenemos la carpeta del perfil del proyecto. Está está formada por: ● Archivos própios del perfil ● Un archivo <profile>.make ● Los features del proyecto ● Los módulos personalizados ● El tema 32
  • 33. GIT: CONTROL, CONTROL Y MÁS CONTROL (III) ● El .gitignore del perfil es: modules/* !modules/custom !modules/features themes/* !themes/custom libraries/* ● Qué sentido tendría tener los módulos o temas contribuidos o las librerías en Git si ya está la información en d.o? 33
  • 34. GIT: CONTROL, CONTROL Y MÁS CONTROL (y IV) ● Recomendaciones de un programador que ha sufrido... ● ● ● ● Haz commits de cada unidad significativa. Si debes volver a atrás te será más fácil y menos impactante. Usa/abusa de las ramas. Si están es por algo! Tagea los estados en Git. Tarde o temprano vas a querer saber cuál era el estado del código el día que subiste a producción algo Y mucho más! 34
  • 35. LAST BUT NOT LEAST 35
  • 36. PASO ENTRE ENTORNOS (I) ● Quién de aquí ha hecho alguna vez un paso entre entornos con lápiz y papel? ● Venga no engañéis... ● Venga... ● … ● Lo acepto, yo también lo he hecho! ● Pero hoy en día ya “no” hay excusa... 36
  • 37. PASO ENTRE ENTORNOS (y II) ● ● ● Si tenemos toda nuestra configuración en código, un paso entre entornos se puede volver en una cosa “trivial” “Simplemente” haciendo un git pull (de la rama que queramos) + drush updb + drush cc all podemos desplegar en otro entorno Usarlo, veréis cómo hay un antes y un después y dormiréis más a gusto! 37
  • 38. INTEGRACIÓN CONTINUA ● ● ● ● Si tenemos todo a código, y además en Git, ya no tenemos escusas para no usar un sistema de integración continua Hacer un sistema de despliegue automático es mucho más fácil con esta arquitectura Se nos terminan las escusas para no empezar a usar Jenkins, por ejemplo Hay una sesión por ahí que trata estas palabrotas http://ves.cat/boTG 38
  • 39. CONTACTO Twitter: @rvilar ● Correo: ramon@ymbra.com ● Blog: http://ymbra.com/blogs/ramon ● Web: http://ymbra.com ● Grácias a todos(as). ¿Preguntas? 39