• урок
  • pantey

Импорт из XML файла в сущность Drupal.

14.11.2014

Сегодня затронем довольно простую, но почему-то вызывающую трудности задачу, а именно будем выгружать данные из XML файла в сущность Drupal, в данном примере будем использовать в качестве сущности ноду. Для работы нам понадобится тестовый xml файл, я же вам предлагаю свой, который будет использоваться в примере. Скачать его можно здесь, а так же модуль Feeds , который будет организовывать импорт из файла в сущность, а так же модуль feeds_xpathparser, который расширяет стандартные возможности feeds и позволяет производить импорт из XML формата.

После активации данных модулей, приступаем к созданию нового «импорта», переходим по пути «Структура -> Импортеры» и жмем «Добавить импортер»

Добавляем новый импорт

Вводим любое имя, я назову его как XMLparser

Ввели имя нового импорта

И жмем «Создать». Дальше перед нами открывается страница с настройками нового «Импорта». Переходим в базовые настройки, здесь уберем периодичность импорта, остальные настройки оставим по умолчанию.

Отключили периодичность импорта файла

Не забываем нажать «Сохранить». Далее идем в настройки фетчера (сборщика), здесь нам нужно определить, каким образом мы будем доставлять файл для импорта, это может быть как:

  • Через форму загрузки файла при импорте
  • Забирать файл с указанного URL

Нам в данном случае подходит первый вариант

Выбрали способ доставки файла для импорта

Отмечаем и опять же жмем «Сохранить». В пункте «Загрузка файла», в качестве разрешенных к загрузке форматов файлов оставим только XML, а остальные настройки оставим по умолчанию

Разрешенные к загрузке форматы файлов

Жмем «Сохранить». Теперь нам необходимо выбрать парсер, который сможет распарсить наш файл XML, кликаем по следующему пункту, который так и называется «Парсер» и в качестве парсера выбираем «XPath XML parser», данный парсер был предоставлен модулем feeds_xpathparser

Выбрали парсер

Дальше настройки XPath XML parser оставляем по умолчанию. Переходим к «Процессору», в данном разделе нам необходимо выбрать сущность, куда будем импортировать данные из файла XML, в нашем случае это нода, поэтому выбираем «Node processor»

Выбрали сущность, куда будем импортировать данные их XML файла

Далее переходим к настройке «процессора», где нам обязательно нужно выбрать тот тип материала, в который мы будем импортировать данные, в нашем случае – это «Article»

Выбрали тип материала в который будем производить импорт

Остальные настройки оставляем по умолчанию. Теперь осталось дело за малым, а именно определить поля для импорта, как вы могли заметить, наш файл имеет три поля:

  • Title – соответствует заголовку
  • Description – соответствует описанию
  • Image – соответствует изображению

Поэтому, добавляем наши поля в импортер

Определили поля для импорта

Сохраняем и на этом с основными настройками закончили. Теперь осталось проверить, как это у нас все работает, для этого переходим по URL

  1. http://sitename/import

Выбираем наш созданный импорт и выбираем файл XML для импорта. Теперь нам лишь осталось расставить соответствие полей типа материала к нашему файлу, у меня они выглядят так:

Соответствие полей типа материала к файлу XML

И жмем «Импорт».

Видим что импорт прошел успешно

Можете самостоятельно проверить на существование контента.

Результат импорта XML файла

Хочу заметить, что файл изображения, который указан в XML файле должен быть предварительно загружен на ваш сервер, в моем случае он находится по пути sites/defaults/files/test.jpg, в вашем же случае он может быть любым.

На этом думаю можно закончить.

-->
Узнавай о новых статьях сайта - первым. Просто подпишись на рассылку.

Комментарии (3)

Profile picture for user 1541
Егор
11.02.2015

Как можно категории загрузить? И потом выставить соответствие категориям сайта? А не каждый товар по категориям разносить?

Profile picture for user 1541
Тарас
15.11.2015

Полезная статья! Спасибо!
Помогите разобраться, как загружать изображения с другого сайта, при такой структуре xml файла

- 
    -
        - 
      
Profile picture for user 1541
Юлия
12.03.2018

А какой виджет на поле изображения должен быть? У меня с Drag & Drop Upload не получается. И возможна ли мультизагрузка изображений таким способом?