PDF de programación - Arquitectura de proyectos Drupal

Imágen de pdf Arquitectura de proyectos Drupal

Arquitectura de proyectos Drupalgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 5 de Marzo del 2018)
519 visualizaciones desde el 5 de Marzo del 2018
454,1 KB
39 paginas
Creado hace 11a (20/10/2012)
Arquitectura de proyectos

Drupal

Ramon Vilar Gavaldà

QUIÉN SOY

● Socio fundador de Ymbra
● Desarrollador Drupal
● Miembro activo de la
comunidad drupalera:
● Presidente de Drupal.cat
● Administrador de la
traducción catalana
● Eventos, parches...

2

Ramon Vilar Gavaldà

http://ymbra.com/blogs/ramon

http://twitter.com/rvilar

http://drupal.org/user/293298

Í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

Configuración

Contenido

Ficheros

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 versionar el código
● Podemos resolver los conflictos (trabajo en grupo)
● Separamos contenido de configuración
● 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 an
  • Links de descarga
http://lwp-l.com/pdf9214

Comentarios de: Arquitectura de proyectos Drupal (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad