logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builder❗

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

❗Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri

Configurazione della migrazione durante l’aggiornamento a Drupal 8

01/10/2025, by Ivan

Crea le tue migrazioni iniziali

  • Crea le migrazioni usando drush migrate-upgrade --configure-only, come descritto in Aggiornare usando Drush.
  • Assicurati di avere una directory config/sync, in cui verrà scritto il passo successivo
  • Esporta le migrazioni usando drush config:export
  • Crea il tuo modulo di migrazione personalizzato
  • Copia solo i file YML che vuoi utilizzare dalla cartella config/sync nella cartella config/install del tuo nuovo modulo personalizzato, modificandoli per rimuovere i valori uuid e modificare l’identificativo, il gruppo, l’etichetta e altri valori, se necessario.
  • Copia il file del gruppo migrate_plus.migration_group.migrate_drupal_7.yml da config/sync nella cartella config/install del tuo nuovo modulo personalizzato, rinominandolo migrate_plus.migration_group.your_module.yml. Avrai bisogno del file di gruppo perché contiene le impostazioni del database.

Gestione della migrazione

  • Inizia con la migrazione dei ruoli utente e degli utenti, prima di passare ai nodi
  • Continuando ad aggiungere file alla cartella config/install, ricarica la cartella usando un comando come drush config-import --partial --source=modules/custom/your_module/config/install (richiede il modulo Config attivo) 

Rinominare i campi durante l’aggiornamento a Drupal 8

Supponiamo che il tuo sito Drupal 7 abbia un tipo di contenuto A con i campi foo, bar e baz. Supponiamo inoltre che tu voglia rinominare il campo baz in zot in Drupal 8. Modifiche di questo tipo sono piuttosto semplici quando esegui l’aggiornamento usando Drush.

  • Crea le migrazioni usando drush migrate-upgrade --configure-only, come descritto nella pagina indicata sopra.
  • Esegui la migrazione del tipo di nodo e dei campi. Questo genererà il tipo di contenuto A e i campi foo, bar e baz.
  • Crea manualmente il campo zot in Drupal 8. Elimina il campo baz creato dalla migrazione ma che non prevedi di usare.
  • Il modulo Migrate Plus permette di gestire le migrazioni come oggetti di configurazione, consentendo di caricarle, modificarle e salvarle in modo flessibile. Le singole migrazioni create con drush migrate-upgrade --configure-only possono ora essere controllate andando su admin/config/development/configuration/single/export e selezionando «Migration» come Tipo di configurazione. Seleziona la migrazione per i nodi (A).
  • Copia e incolla la migrazione in admin/config/development/configuration/single/import, ma modifica la mappatura del campo in modo che il campo di destinazione sia field_zot, pur mappando ancora la sorgente da field_baz. Il contenuto esatto della definizione della migrazione dipenderà dal tipo di campo. Per comprendere l’anatomia delle migrazioni, consulta gli esempi nella documentazione di Migrate API.
  • Dopo aver importato la migrazione modificata, puoi eseguire la migrazione per i nodi A con Drush e verificare che i dati siano stati migrati correttamente nel campo zot.
  • Ripeti la modifica della mappatura anche per la migrazione delle revisioni del nodo (A), se prevedi di migrare anche le revisioni.

Un altro modo per ottenere lo stesso risultato è creare manualmente il nuovo campo zot, come descritto sopra, e modificare la mappatura dei campi della migrazione dei nodi (A) implementando hook_migration_plugins_alter().

Scrivere plugin di processo personalizzati

Se hai bisogno di definire la tua logica di trasformazione (se questo, allora quello), puoi pensare di scrivere un tuo plugin di processo.

L’esempio nella documentazione di Migrate API utilizza la migrazione degli utenti come esempio. Per determinare il codice lingua dell’utente è necessaria una logica if-else, come descritto nell’esempio, e per questo il modulo User fornisce un plugin di processo personalizzato UserLangocode.

L’esempio sopra descrive come il processo debba essere salvato nella cartella MODULE/src/Plugin/migrate/process e come debba essere annotato per poter essere usato. Usa UserLangcode e altri plugin di processo come esempi quando scrivi i tuoi!

hook_migrate_prepare_row()

Se hai bisogno di definire la tua logica di trasformazione, puoi anche implementare hook_migrate_prepare_row() nel tuo modulo personalizzato e inserire lì la tua logica.

Come descritto nella documentazione API dell’hook, questo hook ha tre argomenti:

Come indicato nella documentazione API dell’hook, puoi usare $migration->id() per limitare la tua logica solo alla migrazione desiderata.

Per leggere una proprietà sorgente in una variabile, usa Row::getSourceProperty(), ad esempio se la riga di origine ha una proprietà chiamata type, puoi scrivere: $type = $row->getSourceProperty('type');

Per impostare una nuova proprietà che puoi poi usare nella definizione di migrazione come sorgente, usa Row::setSourceProperty().

Per fare query al database del sito sorgente, usa $source->getDatabase()->query(), come mostrato nella documentazione dell’interfaccia di connessione API.

Per saltare una riga dalla migrazione, puoi lanciare una nuova eccezione MigrateSkipRowException.

hook_migration_plugins_alter()

Un altro modo per personalizzare la migrazione è implementare la funzione hook_migration_plugins_alter() nel tuo modulo personalizzato.

Come descritto nella documentazione API, questo hook ha un solo argomento, che è un array associativo di tutte le migrazioni rilevate. Puoi modificare le migrazioni o rimuovere quelle che non vuoi eseguire.

Migrate Plus fornisce l’evento PREPARE_ROW

Se preferisci scrivere le tue risposte personalizzate al gestore principale prepare_row in modo orientato agli oggetti invece di implementare hook_migrate_prepare_row(), puoi farlo se hai abilitato il modulo Migrate Plus. Migrate Plus fornisce l’evento PREPARE_ROW, al quale il tuo event subscriber può iscriversi. Consulta la documentazione di Drupal 8 API sugli eventi. Per un esempio di implementazione di un event subscriber in un altro contesto, puoi fare riferimento a questo esempio dalla guida del modulo Simple FB Connect.