Как настроить миграцию URL alias в Drupal 10 для обновлённых ID терминов и нод после миграции с Drupal 7?

Главные вкладки

Аватар пользователя nathan158 nathan158 4 октября в 20:17

Миграция контента с Drupal 7 в Drupal 10.
Описывал отдельно для каждого контента типа и для каждого словаря конфигурацию миграции в yml файлах, импортировал их и выполнял.
Но в каждой конфигурации в секции process я не указывал id: id, чтобы каждый контент или термин получил новый id в Drupal 10, а не тот, который был в Drupal 7.

Сейчас я сделал миграцию URL alias. И вижу, например, для термина "Apparel", что:
Alias такой: /category/apparel
System path такой: /taxonomy/term/6018

Но термина с id=6018 у меня не существует, потому что это id, который был у термина в Drupal 7. Сейчас у него уже совсем другой id, который был создан во время миграции. И если я открою страницу /category/apparel или /taxonomy/term/6018 то увижу "The requested page could not be found.".

Подскажите пожалуйста что мне нужно прописать в конфигурации миграции URL alias чтобы в system path в конце были новые id, такие как в Drupal 10.

id: upgrade_d7_url_alias
migration_tags:
 - 'Drupal 7'
migration_group: migrate_drupal_7
label: 'URL aliases'
source:
 plugin: d7_url_alias
 constants:
   slash: /
process:
 id:
   -
     plugin: get
     source: pid
 _path:
   -
     plugin: concat
     source:
       - constants/slash
       - source
 alias:
   -
     plugin: concat
     source:
       - constants/slash
       - alias
 node_translation:
   -
     plugin: explode
     source: source
     delimiter: /
   -
     plugin: extract
     default: INVALID_NID
     index:
       - 1
   -
     plugin: migration_lookup
     migration:
       - custom_blog_post_nodes_migration
       - custom_page_nodes_migration
   -
     plugin: node_complete_node_translation_lookup
 langcode:
   -
     plugin: null_coalesce
     source:
       - '@node_translation/1'
       - language
 path:
   -
     plugin: path_set_translated
     source:
       - '@_path'
       - '@node_translation'
destination:
 plugin: 'entity:path_alias'
migration_dependencies:
 required: {  }
 optional:
   - custom_blog_post_nodes_migration
   - custom_page_nodes_migration

Комментарии

Аватар пользователя jason32 jason32 10 октября в 9:52

>> Но в каждой конфигурации в секции process я не указывал id: id, чтобы каждый контент или термин получил новый id в Drupal 10, а не тот, который был в Drupal 7.

И почему? Ну так укажите и заново с нуля все прогоните. И все наладится. Ну или сразу ыормируйте где то данные было-стало и пишите скрипт, который будет их узнавать и менять вам алиасы