creando distribuciones
con drupal
DrupalCamp & SymfonyDay Mexico 2014
Web Developer, Drupalero, Mobile Developer (iOS Especialist)
Pocket Lab / @omers / Drupal ID: omers / Git User: omero
Los puntos a discutir
- Que es ?
- Algunas distros
- Por que debería usarlas ó hacerlas?
- Es difícil hacer una distribución ?
- Anatomía de una Distribución
- Casos a considerar
- Mis BFF (Contributed Modules)
Que es una distribucion drupal ?
Definiremos a las distribuciones (a.k.a distros) como copias de Drupal con piezas de software adicional como lo son:
- Temas
- Modulos
- Librerias de Terceros
- Perfiles de Instalación
Una distribución no es un perfil de instalación?
distribución vs
perfil de instalación
La confusion de términos es de lo mas común, no debemos de asustarnos el problema no es tan grave pero si debemos de tener bien claro lo que es cada uno de los conceptos
Perfil de instalación
Es a lo que llamamos la "Base de la distribución".
Es el encargado de definir los pasos de la instalación (habilitar módulos crear tipos de contenido, taxonomías, términos, etc), con ejecutados después de la instalación base de Drupal.
Los mas populares son :
Standard & Minimal :D
distribución
Como lo definimos anteriormente: copias de Drupal que incluyen el core , módulos, temas y perfiles de instalación los cuales nos permiten configurar los módulos los temas y las características de nuestra distribución para su perfecto comportamiento
tipos de distribuciones
e instalaciones
- Drupal Core
- Distribuciones Full - featured (Todas las funciones)
- Distribuciones Generales
- SaaS (Software as a Service)
Algunas distros
commerce kickstart
La distribución mas instalada es usada para levantar tiendas virtuales (e-commerce), de manera rápida y sencilla
open publish
Distribución diseñada para la industrias de noticias y contenidos como revistas, periódicos, etc
open atrium
Distribución para intranets trabajo colaborativo , intercambio de documentos, wikis, eventos ,etc.
open public
Para gobierno, organizaciones políticas , para iniciativas de gobierno abierto, datos abierto, sitios de tranparencia.
drupal commons
Distribución orientada para la sitios de comunidades, grupos eventos, foros, etc
open politic
Distribución orientada a fortalecer la democracia en campañas electorales, creando perfiles de los candidatos y el puesto que representan así como referenciar contenido digital para sus aciertos o desaciertos durante su campaña
orgullosamente latina !!!
por que deberia usarlas o hacerlas ?
probar drupal
Si estas iniciando en este camino debes de tener algo muy claro
una vez instalado drupal no significa nada ... es hora de configurar los modulos
Bueno este puede ser un gran inicio las distribuciones ya vienen preconfiguradas te van a servir a tener algo
demostraciones drupal
A veces tenemos situaciones donde necesitamos realizar un pequeño demo de alguna funcionalidad ya sea para el equipo o para un cliente (LO CUAL NO ES BUENO HACER EN VIVO),
atacar esta curva de aprendizaje
Puede ser un buen inicio para experimentar site building, configuración y administración, con estos buenos ejemplos
desarrollo agil (reduccion de tiempos)
En su mayoría ... el código se reutiliza :D
Hacer el esfuerzo de empaquetar nuestros proyectos en distribuciones puede reducir de manera abismal el tiempo de desarrollo y poder dedicarlo a cosas mas productivas
no reinventemos la rueda !!!!!
es dificil hacer una distribucion ?
tal vez NECESITAMOS saber algunas pequeñas cosas
Requeridas :
- PHP
- Conocimineto Basicos de Hook's
- Manejo de Arrays PHP
- Drush
- Un buen Editor
Opcionales :
- HTML
- CSS
anatomia de una distribucion
La anatomia de las distribuciones son muy parecidas a la de los modulos
- file.info
- file.install
- file.profile
file.info
Es bastante parecido al .info de nuestros modulos.
name = "My Distro."
description = "This is my first Distro"
core = "7.x"
dependencies[] = block
dependencies[] = comment
dependencies[] = contextual
dependencies[] = dashboard
dependencies[] = help
dependencies[] = image
dependencies[] = list
En las dependencias podemos agregar tanto módulos contribuidos como nuestros módulos custom
file.install
/**
* Implement hook_install().
*
* Perform actions to set up the site for this profile.
*/
function my_distro_install() {
include_once DRUPAL_ROOT . '/profiles/minimal/minimal.install';
minimal_install();
}
Este es el archivo que podemos usar para insertar contenido en la DB como lo pueden ser bloques ,tipos de contenidos, roles, usuarios, tambien podemos mandar a invocar un perfil de instalación existente (como el ejemplo),haciendo uso del hook_install.
file.profile
En este archivo es donde la magia empieza :P
Acá podemos manipular al grado que queramos el workflow de instalación .
Crear pasos de instalación.
Eliminar Pasos de la instalación.
Modificar Formularios en los pasos de instalación.
Y hasta donde nuestra imaginación quiera llegar.
algunos hooks que no debemos perder de vista
algunas funciones que nos pueden ser de gran utilidad
empaquetando una distribucion para drupal.org
Nuestro mejor aliado DRUSH.
Necesitamos nuestro file.make.
Este archivo lo definiremos como la "receta" de como obtener todas las dependencias de nuestra distro.
Para mayor información: Packaging a distribution in Drupal.org
como luce un archivo .make
api = 2
core = 7.x
projects[admin_menu][subdir] = contrib
projects[admin_menu][version] = 3.0-rc4
libraries[ckeditor][destination] = libraries
libraries[ckeditor][directory_name] = ckeditor
libraries[ckeditor][patch][] = "http://drupal.org/files/1337004-ckeditor-remove-samples-3.patch"
anatomia de una distribucion
(d8 the new way)
Acá están cambiando un par de "Muchas cosas"
todo cambio es bueno!
file.info.yml
name: Standard
type: profile
description: 'Install with commonly used features pre-configured.'
version: VERSION
core: 8.x
dependencies:
- node
- history
- block
- breakpoint
- ckeditor
- color
- config
Ahora tenemos un archivo YML bastante similar al .info anterior con algunas caras nuevas como el type lo cual indicara si lo que tenemos es un modulo un tema o un perfil
file.install
Tiene el mismo objetivo aunque con nuevas "monerias"
nuestras configuraciones ahora son yml's
si es configuracion seguramente existe un yml que ya la tiene :P
Adios escrituras a DB
Hola YML
file.profile
Este archivo tiene la misma función que tiene en D7 aun no encontramos modificaciones.
pero los mantendremos informados
nuevos directorios que se vuelven de extremadamente utiles
- config (nuestros estimados yml).
- lib (test, plugins, etc).
casos a considerar
- Pensar de manera generica.
- Pensar de manera modular.
- No hacer uso excesivo de módulos.
- No todo lo que esta en la DB de un site quiere decir que se replicara en el otro.
- Evitar tanto como sea posible hardcoding en los módulos customizados.
- Ser capaces de decidir donde usar hardcoding y donde no (tampoco nos emocionemos)
mis mejores amigos
(contributed modules)
Actualmente para D7 tenemos módulos que nos pueden ser de gran ayuda en el desarrollo de nuestras distribuciones y es muy recomendable utilizarlos este es el caso de,
- Features
- Ctools
- Features Extra
demo
(si el tiempo lo permite)
referencias
q & a
GRACIAS
www.pocketlab.mx
omar.aguirre@pocketlab.mx / @omers
Creando Distribuciones con Drupal
By Omar Aguirre
Creando Distribuciones con Drupal
- 1,214