Импорт из csv с помощью модуля Feeds

25 Jul, 2014

Feeds — мощный инструмент для импорта данных из файлов CSV или XML. Может создавать ноды, термины таксономии, юзеров и писать в базу напрямую.

Страница проекта находится здесь: https://www.drupal.org/project/feeds, официальная документация на английском здесь: https://www.drupal.org/node/622696 .

Я рассмотрю вариант настройки этого модуля для импорта из файла CSV, загружаемого через форму, но модуль также может импортировать данные самостоятельно через определенный промежуток времени и загружая файл CSV или XML, находящийся в сети.

Базовые настройки

Итак, устанавливаем модуль, включаем на странице модулей Feeds, Feeds Admin UI и Feeds Import. Далее идем в Структура → Feeds Importers → Node Import → Edit, и открываем вкладку Basic Settings.

Поля Имя и Описание понятны, можно задать свой вариант чтоб не путаться, если импорт делается из разных файлов с отличными настройками.

Attach to content type я поставил в Use standalone form (Использовать отдельную форму). Эта формa будет находится по адресу http://ваш-сайт/import

Periodic import — Off, Import on submission – checked. Импорт будет происходить сразу при загрузке файла в форму.

basic settings

Вкладка Fetcher (Сборщик) – загружать файл по сети или использовать локальный.

Feeds Обработчик

На вкладке File Upload можно задать допустимиы расширения файла и директорию на сайте, где будет сохраняться загружаемый файл. Я в расширениях оставил только "csv".

На вкладке Parser я оставил по дефолту CSV parser, с остальными пока не разбирался.

На вкладке CSV parser задается разделитель (у нас обычно точка с запятой). По поводу чекбокса No headers обьясню подробнее.. Если он не выставлен, то первая строка вашего CSV-файла должна содержать названия колонок, и они должны соответствовать настройкам на вкладке Node processor mapping (колонка Source). Если он выставлен, то первая строка файла должна содержать нумерацию колонок (1, 2, 3 и т.д.)

Processor: Что именно создаем - ноды, термины таксономии или юзеров. В моем случае ноды.

Node processor settings: указываем тип контента для импорта (выпадающий список Bundle), и что делать с существующими нодами (Update existing nodes). Эти ноды можно не обновлять, пересоздавать заново или обновлять. Я поставил на обновление. Также указал автора создаваемых нод и текстовый формат по-умолчанию.

Node processor settings

Node processor mapping

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

Импорт изображений

Модуль Feeds без проблем позволяет импортировать изображения. Для этого в csv-файле должен быть указан их url. При импорте изображения скачиваются в папку, указанную в настройках поля изображения, а также произвотся остальные необходимые изменения (переименование файла, транслитерация и т. д., если они настроены).

Импорт нескольких значений в поле

Допустим, наш импортируемый товар находится сразу в нескольких категориях, или имеет несколько изображений... Как быть? На помощь приходит модуль Feeds Tamper. Устанавливам модуль, включаем Feeds Tamper и Feeds Tamper Admin UI. Теперь в настройках импорта появляется новая вкладка Tamper. В ней для каждого поля можно добавить дополнительную обработку перед импортом. Там довольно много плагинов для различной обработки текста, дат и т. д. В контексте нашей задачи понадобится плагин List → Explode. Добавляем плагин, указываем разделитель и готово! Понятно, что в самом csv при этом значения также должные быть разделены, например, через запятую.
Tamper explode

Добавить комментарий

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.