Crear contenido por defecto que facilite las pruebas en Drupal 8

Cuando desarrollamos en Drupal 7 tenemos algunos flujos de desarrollo que funcionan muy bien y ahora queremos adaptarlos a la nueva versión principal de Drupal.

Una de estas “funcionalidades de desarrollo” como podríamos llamarlas es la posibilidad de crear contenido predefinido que puede ser recreado en cualquier momento para probarlo en el sitio web. Por ejemplo: no te tienes que preocupar de crear usuarios que representen los diferentes roles cada vez que comienzas un sitio, los usuarios ya están creados.

Migrate import

Soliamos hacer esto en Drupal 7 con nuestro propio módulo llamado migrate_default_content y después de valorar varias opciones hemos decidido reescribirlo para Drupal 8.

Funcionalidad principal del módulo:

  • Tener tus contenido en ficheros bajo control de versiones. Evita los volcados de base de datos.

  • Recrea tu contenido fácilmente en cualquier entorno.

  • Se apoya en la API de migrate, asi que podemos gestionar dependencias entre contenidos, referencias, asi como revertir y recrear.

  • Soporte para cualquier tipo de entidad que migrate pueda gestionar.

Aunque en principio queríamos un módulo con la misma funcionalidad hemos añadido mejoras sobre la versión de Drupal 7:

  • Ya no necesitamos especificar la estructura de la migración en un fichero YAML porque se toma de la cabecera del fichero CSV. Aunque si quieres configurar tu migración de alguna manera distinta aún puedes tener un fichero YAML que sobreescriba la que se crea al vuelo.

  • Usamos el analizador de YAML incluido en el core de Drupal y hacemos uso de otras APIs para generar el comportamiento de la migración, como por ejemplo suscripciones a eventos.

  • Usamos la primera columna como identificador de la fuente de manera que ahora podemos usar un uuid en vez de identificadores estáticos.

Planes de futuro.

Mientras escribía CSV para que sirviera de ejemplo se reveló claramente que la estructura “plana” de los CSV no encaja con el modelo de datos de Drupal. Campos que tienen subcomponentes como puede ser el cuerpo de una noticia con su formato y su resumen o simplemente un campo multivalor nos obligan a usar separadores o estructuras anidadas. El candidato más prometedor para reemplazar a CSV es JSON, con la ventaja añadida de poder usar la salida de un servicio REST para exportar a código el contenido que hemos generado previamente en la interfaz de Drupal.

Puedes probar este módulo hoy mismo y si tienes una entidad o un tipo de campo que necesita un tratamiento especial no dudes en añadirlo abriendo un ticket.

Lo hemos liberado con una licencia de software libre y algo de documentación sobre como usarlo pero no dudes en contactarnos para saber más!