Миграция терминов таксономии

Термины представляют из себя отдельные сущности, которые подключаются к родительской entity в виде term reference. Потому классический подход — это отдельная предварительная миграция терминов, а потом подключение их, используя migration_lookup плагин.

Но на практике, вы скорее всего будет иметь термины в виде текстовых меток. И вам удобнее будет обработать их «на лету», без дополнительной отдельной миграции.

Именно для этого я и написал небольшой миграционный обработчик, который преобразует текстовую метку в ссылку на термин (создаёт или находит существующий).

Вот код этого process plugin:

Он принимает $value (метку термина) и возвращает массив [‘target_id’ => TERMID].

В настройках можно указать в какой словарь должен попадать термин (destination_bundle).

Примеры использования в миграции:

В первом случае (field_blog_category) читается одиночный термин категории (category). Во втором — (field_blog_tag) список тегов, разделенных запятыми. При этом используется т.н. pipeline, где на первом шаге строка разбивается стандартным плагином explode, а дальше каждый термин передаётся в наш процессор term_generate.

Разместите данный плагин в вашем модуле (/src/Plugin/migrate/process), и сбросьте кеш, чтобы Drupal его зарегистрировал.

Написать комментарий

Мало букафф? Читайте есчо !

Миграция картинки по URL в Media поле (Drupal)

Март 3, 2024 г.

Мне нужен был обработчик для migration API, который создаёт media entity по URL и возвращает его ID. Обработчики представляют из себя расширения ProcessPluginBase, которые нужно размещать в папке /src/Plugin/migrate/process вашего модуля. Файл ...

Читать

Конфигурация для миграции статей (node:blog) из CSV файла

Март 2, 2024 г.

Это пример миграции данных из CSV файла в Drupal. Данная миграция является основной в том смысле, что она ссылается на дочернюю миграцию, в ходе которой будут созданы параграфы (entity_reference_revisions:paragraph) с HTML контентом. А далее мы ...

Читать

 

Комментарии к «Миграция терминов таксономии»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: