logo

Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll

Configuración de migración al actualizar a Drupal 8

18/06/2025, by Ivan

Crear sus migraciones iniciales

  • Genere las migraciones usando drush migrate-upgrade --configure-only, como se describe en la sección «Actualización usando Drush».
  • Asegúrese de tener un aconfig/syncdirectory donde se guardará el siguiente paso.
  • Exporte las migraciones usando drush config:export.
  • Crear su propio módulo de migración personalizado.
  • Copie solo los archivos YML que desea usar desde el directorio config/sync al directorio config/install de su nuevo módulo personalizado, editándolos para eliminar valores uuid y modificar el id, grupo, etiqueta y otros valores según sea necesario.
  • Copie el archivo de grupo migrate_plus.migration_group.migrate_drupal_7.yml desde config/sync al directorio config/install de su nuevo módulo personalizado, renombrándolo como migrate_plus.migration_group.your_module.yml. Necesitará el archivo de grupo porque contiene la configuración de la base de datos.

Gestionar la migración

  • Comience migrando los roles y usuarios personalizados antes de migrar los nodos.
  • Continúe agregando archivos al directorio config/install y recargue el directorio con algo como drush config-import --partial --source=modules/custom/your_module/config/install (esto requiere habilitar el módulo Config).

Renombrar campos al actualizar a Drupal 8

Supongamos que en su sitio Drupal 7 tiene un tipo de contenido A con campos foo, bar y baz. También suponga que desea renombrar el campo baz a zot en Drupal 8. Cambios como este son bastante sencillos cuando actualiza usando drush.

  • Genere las migraciones usando drush migrate-upgrade --configure-only, como se indicó antes.
  • Ejectúe la migración del tipo de nodo y campos. Esto generará el tipo de contenido A y los campos foo, bar y baz.
  • Manualmente cree el campo zot en Drupal 8. Elimine la base baz que creó la migración pero que no planea usar.
  • El módulo Migrate Plus permite implementar módulos como objetos de configuración, permitiendo cargar, modificar y guardar de forma flexible. Las migraciones individuales creadas con drush migrate-upgrade --configure-only pueden verificarse ahora yendo a admin/config/development/configuration/single/export y seleccionando “Migration” como Tipo de configuración. Seleccione la migración para nodos (A).
  • Copie y pegue la migración en admin/config/development/configuration/single/import, pero modifique el mapeo del campo para que el campo destino sea field_zot, aunque siga mapeando la fuente de field_baz. El contenido exacto de la definición de migración dependerá del tipo de campo. Para entender la anatomía de las migraciones, consulte los ejemplos en la documentación de la API de Migrate.
  • Después de importar la migración modificada, puede ejecutar la migración para los nodos A con Drush y verificar que los datos se migraron correctamente al campo zot.
  • Repita el cambio de mapeo para la migración de revisiones de nodos (A) si también planea migrar revisiones de nodos.

Otra forma de lograr lo mismo es crear manualmente un nuevo campo zot, como se describió arriba, y modificar el mapeo del campo en la migración de nodos (A) implementando hook_migration_plugins_alter().

Escribir plugins de proceso personalizados

Si necesita definir lógica personalizada de transformación (si esto, entonces aquello), puede considerar escribir un plugin de proceso personalizado.

Un ejemplo en la documentación de la API de Migrate usa la migración de usuarios como ejemplo. Para definir la lógica del código de idioma de usuario se requiere lógica if-else, como se describe en el ejemplo, y por ello el módulo User proporciona un plugin de proceso propio llamado UserLangcode.

El ejemplo anterior describe cómo debe guardarse el proceso en el directorio MODULE/src/Plugin/migrate/process y cómo anotarlo para que pueda usarse. Use UserLangcode y otros plugins de proceso como ejemplos para escribir los suyos propios.

hook_migrate_prepare_row()

Si necesita definir lógica de transformación personalizada, también puede implementar hook_migrate_prepare_row() en su módulo personalizado y definir su lógica allí.

Como se describe en la documentación de la API del hook, el hook tiene tres argumentos:

Como se indica en la documentación del hook, puede usar $migration->id() para limitar su lógica a una migración específica.

Para leer una propiedad fuente en una variable, use Row::getSourceProperty(), por ejemplo, si en la fila fuente existe una propiedad llamada type, puede hacer: $type = $row->getSourceProperty('type');

Para establecer una propiedad completamente nueva que pueda usar en la definición de migración como fuente, use Row::setSourceProperty().

Para hacer consultas a la base de datos del sitio origen, use $source->getDatabase()->query(), como se muestra en la documentación de la interfaz de conexión.

Para omitir una fila durante la migración, puede lanzar una nueva excepción MigrateSkipRowException.

hook_migration_plugins_alter()

Otra forma de personalizar la migración es implementar la función hook_migration_plugins_alter() en su módulo personalizado.

Como se describe en la documentación de la API, este hook tiene un argumento que es un arreglo asociativo de todas las migraciones detectadas. Puede modificar migraciones o eliminar las migraciones que no desea ejecutar.

Migrate Plus provee el evento PREPARE_ROW

Si prefiere escribir sus respuestas personalizadas al manejador principal prepare_row de forma orientada a objetos en lugar de implementar hook_migrate_prepare_row(), puede hacerlo si tiene habilitado el módulo Migrate Plus. Migrate Plus proporciona un evento PREPARE_ROW al que puede suscribirse su listener. Documentación del API de eventos de Drupal 8. Para un ejemplo de implementación de un listener de eventos en otro contexto, puede consultar este ejemplo del módulo Simple FB Connect.

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.