Перенос многоязычного контента из CSV в Drupal 8

Опубликовано: 2021-07-13

Перенос данных из любого источника в Drupal 8 теперь стал проще с помощью различных модулей, которые позволяют легко переносить данные. Миграция в Drupal - это термин для любого процесса, который перемещает данные из внешнего источника на текущий сайт Drupal. Вы можете перенести данные, которые включают узлы, пользователей, конфигурацию и любые другие компоненты сайта.

Drupal предоставляет вам множество способов переноса контента. В зависимости от веб-сайта и источника данных вы можете выбрать лучший способ сделать это. Однако перенос многоязычных данных может добавить еще несколько шагов к процессу миграции. Сначала вам нужно будет перенести базовый контент, а затем перенести переводы. В этой статье мы подробно рассмотрим эти шаги, чтобы помочь вам лучше понять перенос многоязычного контента из CSV в Drupal 8.

CSV Импорт

Модули миграции Drupal 8, которые вам понадобятся

Как упоминалось ранее, Drupal предлагает множество опций и модулей, которые могут помочь вам в простой и беспроблемной миграции. Для переноса многоязычного контента вам потребуются:

  1. Migrate: предоставляет гибкую структуру для переноса контента в Drupal из других источников.
  2. Migrate plus: предоставляет плагины для миграции, такие как плагины исходного кода, плагины процессов, плагины назначения и расширения API.
  3. Migrate Drupal: Обеспечивает поддержку миграции содержимого и конфигураций.
  4. Перенести исходный CSV-файл : предоставляет плагин для импорта содержимого в Drupal из CSV-файла.
  5. Инструменты миграции : этот модуль предоставляет инструменты пользовательского интерфейса и команды Drush, используемые для миграции.
  6. Модуль разработки конфигурации: этот модуль преобразует скрипт в конфигурации.

Шаг 1. Перенос базового содержимого

Чтобы начать миграцию базового контента, нам сначала нужно создать собственный модуль в Drupal 8.

Создать собственный модуль

Убедитесь, что в info.yml есть эти ключи и значения.

Вам нужно будет создать yaml- файлы, известные как сценарии миграции, и поместить их в каталог config / install созданного настраиваемого модуля. Ключ config_devel / install файла info.yml должен содержать все файлы yaml.

Yaml файл

Это образец файла yaml для импорта терминов таксономии. Скрипт миграции состоит из 4 разделов:

  1. Метаданные: будут иметь идентификатор, метку и идентификатор группы миграции.
  2. Источник: в исходном ключе должен быть указан путь к CSV-файлу.
  3. Процесс: сопоставление полей и столбцов CSV.
  4. Место назначения: место назначения, в котором сохраняются импортированные данные.

Содержимое узла yaml-файла должно быть записано аналогично. Единственная разница - это пункт назначения.

Узел сущности

Плагин назначения должен быть entity: node, а default_bundle будет иметь имя компьютера того типа контента, в который импортируется контент.

После создания всех файлов yaml идентификаторы yaml должны быть включены в info.yml . Как только все будет сделано, включите настраиваемый модуль.

Используйте команду Drush drush cdi <идентификатор миграции> . Здесь идентификатор миграции - это миграция techx . Это преобразует сценарий в конфигурации.

После запуска команды перейдите в админ> структура> миграция . Вы найдете группу миграции, которую вы создали, щелкнув по списку миграции. Это покажет вам список созданных сценариев миграции.

Операции

При нажатии на вкладку «Выполнить» отображается список доступных операций:

Доступные операции

Импорт заключается в извлечении данных из источника.

Откат удалит импортированные данные.

Остановка - прервать процесс импорта или отката.

Иногда процесс застревает. Для перехода в состояние ожидания используется Reset .

Для получения более подробной информации о том, как перенести данные различных сущностей, таких как пользователь, параграф, проверьте CSV Import to Migrate Drupal 7 to 8 - A Complete guide.

Шаг 2. Перенос переводов базового контента

Если вы уже включили многоязычный контент на своем веб-сайте Drupal 8, вы можете пропустить первый шаг. Если вы хотите узнать, как создавать многоязычные веб-сайты на Drupal 8 (и зачем он вам может понадобиться), ознакомьтесь с этой статьей.

1. Добавление языка на сайт Drupal

Чтобы импортировать переводы, сначала мы должны сделать наш сайт многоязычным. Давайте посмотрим, как загрузить языки на сайт.

  1. Включите модуль перевода языка и контента . Это основные модули.
  2. Перейдите в / admin / config / Regional и language / language / add language.Добавить язык
  3. Щелчок по раскрывающемуся списку дает вам список языков. Выберите желаемый язык на сайте и нажмите « Добавить язык» . Это загрузит язык для вашего сайта.

2. Включение перевода для сущностей

После того, как мы установили нужные нам языки, мы должны включить переводы для объектов перед импортом или добавлением переводов к контенту. Для этого перейдите в admin / config / Regional / content translation . Выберите объекты, для которых вы хотите включить перевод, и нажмите « Сохранить конфигурации» .

В этом примере я импортирую тип контента блога и, таким образом, включаю перевод для типа контента блога.

Язык

3. Обновите файлы миграции.

Чтобы импортировать переводы, необходимо внести некоторые изменения в файлы yaml. Укажите путь к CSV-файлу переведенного содержимого в качестве основного содержимого, и переведенное содержимое хранится в разных файлах. Изменения в переводе терминов.

tid

Добавьте новый ключевой tid в раздел процесса сценария с плагином в качестве миграции, источником в качестве идентификатора , а значение миграции должно быть идентификатором миграции его базового сценария миграции содержимого.

Для миграции узла добавьте новый ключевой nid в разделе процесса. Здесь ключ миграции будет иметь значение идентификатора миграции его базового сценария миграции.

Идентификатор источника

Следует добавить еще один ключ - переводы со значением true . Это должно быть добавлено в раздел назначения всех сценариев миграции перевода независимо от сущностей.

Назначения

Определите язык, на который будет импортирован перевод, с помощью ключа langcode . В этом примере я импортирую японские переводы, поэтому значение будет ja .

Langcode

Эти изменения предписывают сценарию брать идентификатор содержимого из основной миграции содержимого, из которой это содержимое обрабатывается как переводы, а не как новый узел.

Что нужно помнить

  • Процесс импорта должен идти в порядке. Например, если термины упоминаются в узле, термины должны быть импортированы в первую очередь перед содержимым узла.
  • Включите перевод для объектов перед импортом переводов.
  • Порядок перевода содержимого в CSV-файле должен быть таким же, как и в основном содержимом. То есть базовый контент и его переводы должны находиться в одной строке в CSV-файле.
  • Сначала импортируйте базовое содержимое, а затем содержимое перевода. В противном случае оба будут рассматриваться как индивидуальное содержимое.