Деньги приходят к вам через других людей. Общайтесь! Нелюдимы и буки крайне редко становятся богатыми

Feeds + Views data export для организации массового переноса контента в Друпал7

 

Перенос типов материалов

Сначала, с помощью модуля Bundle Copy, который ставится на оба сайта, сделал перенос типов материалов. Это делается достаточно просто: сначала копируется набор для экспорта на сайте-доноре (пример - экспорт набора пользователей на странице admin/config/people/accounts/export) и вставляется код в форму на сайте-акцепторе на странице admin/config/people/accounts/import Также сделал на страницах переноса типов материалов. На сайте доноре admin/structure/types/export и на сайте акцепторе admin/structure/types/import

Создание сайта

Выбор вариантов

Далее рассматривалось несколько вариантов переноса контента, каждый из них имеет свои преимущества и недостатки, но я на них останавливаться не буду. Итак, выбор был сделан в пользу Views data export Image URL Formatter - для экспорта и Feeds + Feeds Import + Feeds Tamper для импорта. По установке и настройке этих модулей достаточно информации в интернете, поэтому эти процессы описывать не буду.

Экспорт

Сначала на сайте доноре создал представление, отображающее необходимый материал со всеми нужными полями. Формат - неформатируемый список, Строки views - поля. Критерий сортировки - заголовок по возрастанию.

Для этого представления создал отдельную страницу donor-site/exporter

Настройка полей:

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

Создание сайта

  • в заголовке отключил "Сделать это поле ссылкой на полную версию материала"
  • форматер body - "по умолчанию", для того, чтобы были перенесены теги html. Для этого также надо сделать одно действие, о котором скажу ниже.
  • форматеры для текстовых форматов выбрал "простой текст" (хотя тоже не все однозначно, надо поэксперементировать)
  • для экспорта поля с одной картинкой использовал модуль Image URL Formatter, который создает форматер "url изображения", url type: uri path
  • с экспортом множественного поля картинок пришлось повозится - сработал URI type: full URL.
  • для экспорта автора материала, создал поле Содержимое: UID Автора, которое исключил из вывода и создал Зависимость (Взаимосвязь) Содержимое: Автор. И появилась возможность выбрать поле (Автор) Пользователь: Имя. Это поле Автора материала.
  • форматер ссылки на термин - "простой текст"

Создание сайта

Пейджер не менял - 10 элементов.

 

Далее добавил новое отображение Data Export. Это работа модуля Views data export. Для экспорта я использовал формат csv.

Создание сайта

В настроках формата убрал отметку переноса первой строки, чтобы не путаться при создании импортера, а также отметил "перенос тегов HTML"   
Для этого отобржения создал новую страницу donor-site/exporter/export 
В пейджере снял ограничения на вывод элементов. Хотя для тестирования, сначала оставил 10 элементов, как и в основном отображении.

 

Да, не маловажное: ограничил права доступа к страницам donor-site/exporter/export и donor-site/exporter/export

Итак, экспорт был готов. Перешел на страницу donor-site/exporter/export - файл скачал и сохранил.

Импорт

Создание сайта

На сайте-акцепотре по адресу acceptor-site/admin/structure/feeds создал новый Importer.

Создание сайта

  • Базовые настройки
  • Сборщик: file upload
  • Настройки file upload без изменений
  • Обработчик: CSV  parser
  • Настройки CSV  parser: зазделитель - запятая (по умолчанию). Без заголовков полей.
  • Процессор - здесь выбор за вами. Мне нужен был Node processor.
  • Настройки Node processor. Здесь выбрал тип мателиала, формат текста и снял отметку Autorize, для импорта автора материала.
  • Последняя вкладка "Установка соответствий" - самая важная.

Создание сайта

Создание сайта

Здесь важно было выбрать уникальность заголовка, вормат текста и определение полей терминов таксономии. Поля идут по-порядку также, как в файле CSV.

Создание сайта

Далее с помощью модуля Feeds Tamper, на вкладке Tamper для поля с множественными картинками добавил разделитель Explode.

Создание сайта

И String separator выбрал пайп в качестве разделителя.

Создание сайта

Импортер был готов. Перешел на страницу импорта acceptor-site/import Здесь выбрал нужный импортер и запустил его. Во время тестированя, помогла вкладка "Удалить элементы".

Создание сайта

Импорт прошел без проблем. Все поля подтянулись без ошибок. С помощью этой связки можно импортировать термины, ноды и пользователей. Что значительно облегчает жизнь разработчику на Drupal.

 

Олег Креминский,
web-разработчик на Drupal

Tags: