Drupal Migrate API: Ako zmigrovať obrázky

Pridal/a petiar dňa

Pre jedného klienta robím upgrade webu z Drupal 6 na Drupal 9. Tentokrát som sa rozhodol, že sa hlbšie ponorím do Drupal Migrate API a použijem ho na migráciu obsahu. Všetko šlo ako po masle, až pokiaľ so nenarazil na migráciu obrázkov. Samotné súbory som zmigroval bez problémov, podobne aj obsah, jediné, čo mi nešlo, bolo prepojiť file entity s obsahovými entitami. Na starom (Drupal 6) webe boli vo fielde field_news_images, na novom sa pole volá field_images.

Základ Migrate API tvoria yaml súbory, ktorých štruktúra je celkom dobre pochopiteľná. Zakrátko mi teda došlo, že do migračného yaml pre obsah musím doplniť niečo takéto:

  field_images:
      plugin: sub_process
      source: field_news_images
      process:
        target_id: fid

Znamená to asi toľko, že ID súboru (obrázku) z poľa na Drupal 6 webe sa preniesie do príslušného poľa na Drupal 9 webe. Fungovalo to, len to malo jednu chybu. IDčká súborov na starom a novom webe sa nezhodovali a preto mi do obsahu migračný skript priraďoval neexistujúce entity. Bolo treba teda spraviť ešte jednu drobnú zmenu a to do migračného skriptu pre súbory pridať takúto maličkosť:

  fid:
    -
      plugin: get
      source: fid

Znamená to asi toľko, že pri migrácii súborov zmigrujeme aj ich ID (fid) a teda toho ID bude rovnaké na starom aj na novom webe. Revertol som zmigrované súbory aj obsah a znovu zmigroval najprv súbory, potom obsah a voilá! Súbory boli správne priradné k obsahu.

Aj tak mi to ale nedalo a pátral som, či by so vedel zmigrovať súbory s tým, že by som nemusel migrovať aj ich IDčka. Je to na plugin migration_lookup, ktorý si vie prečítať dáta z inej migrácie. Príslušný kód pre migráciu obsahu potom bude vyzerať nejako takto:

  field_images:
      plugin: sub_process
      source: field_news_images
      process:
        target_id:
          plugin: migration_lookup
          migration: upgrade_d6_ksa_file
          source: fid

Znamená to asi toto: do poľa field_images by som chcel obsah poľa field_news_images a keď to budeš migrovať, tak pre nový obrázok použi ID, pod ktorým si tento súbor zmigroval v rámci migrácie upgrade_d6_ksa_file.

Funguje!

Pridať nový komentár

A ešte si overíme, či toto píše človek a nie robot.
Never hoaxom a odpovedz ako vzdelaný človek.
Súvisiace odkazy
Zaujímavé odkazy

Anketa o nejlepší českou knihu vydanou v posledních 25 letech, kterou najdete v novém Respektu, se nerodila snadno. Odpověď na otázku, kterou jsme zaslali významným osobnostem naší kulturní scény, nezřídka začínala nedůvěrou: „Těžko z takového množství vybrat jen tři knihy.“ – „Literatura není sport a vyhlašovat nejlepší knihu jde proti jejímu smyslu.“ – „Definovat v oblasti kultury jakékoli žebříčky, nominace či ocenění je vždy ošidné a subjektivní.“

Daniel Šmihula napísal pre Denník N relatívne optimistický článok o tom, že to s tými bujnejúcimi autoritárskymi tendenciami nebude až také zlé, resp. že v dlhodobom horizonte sa asi aj tak môžeme tešiť na liberálne demokracie.