понедельник, 8 июня 2009 г.

Drupal 6. Импорт нодов в виде XML

Я работаю вебмастером для одной небольшой фирмы. Наша фирма производит несколько однотипных продуктов с разными характеристиками. Возникла задача размещать прайс-лист этих товаров сразу на несколько сайтов. Я сделал простейшую базу данных на Access, куда заносятся эти товары.

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

Модуль node_import мне понравился, но к сожалению полностью автоматизировать мою работу он не смог.

Поэтому я написал модуль xmlnodeimport для того, чтобы можно было импортировать любые ноды, предварительно сгенерированные в виде XML файла.

Работает он очень просто.

Вы генерируете XML файл например следующей структуры:


<import>

<node type="page">
<param name="title">About company</param>
<param name="body">Lorem ipsum dolor sit amet.</param>
</node>

<node type="story">
<param name="title">Our site is open!</param>
<param name="body">Our site is open since today!</param>
</node>

<node type="product">
<param name="title">Product1</param>
<param name="field_sizemin">0</param>
<param name="field_sizemax">100</param>
<param name="field_price_uah">300</param>
<param name="field_color">red</param>
<param name="field_order">2</param>
</node>

</import>



В данном случае мы импортируем одну страницу, одну новость и один нод с CCK типом product.

Потом на своем сайте идете по ссылке /xmlnodeimport и вставляете содержимое файла в текстовое поле. Жмете кнопку "сохранить".

То есть все, что нужно сделать - это перечислить ноды, указав для каждого тип и значения полей.
Поддерживаются одиночные CCK поля.
Поля, значения которых опущены, заполняются автоматически значениями по умолчанию.

Модуль не претендует на универсальность и сделан для внутреннего использования. Выкладываю его здесь только для тех, кому он будет интересен. Ковыряние в коде и предложения по улучшению приветствуются.

Скачать.

6 комментариев:

  1. Ага. Не работает. А интересно было бы покопаться

    ОтветитьУдалить
  2. Так можно таки перезалить файлик?

    ОтветитьУдалить
  3. Да, перезалить-то оно конечно можно бы, но было это несколько лет назад - и исходники потерялись. Да и drupal уже давно 7, а модуль для шестого. Так что, изучайте Drupal 7 API и дерзайте ;)

    А лучше - вообще забейте на PHP и работайте с nodejs. У нас есть печеньки! http://express-js.ru/guide.html

    Удачи, дорогие коллеги!

    ОтветитьУдалить
  4. Я бы и сам не прочь почитать свой старинный код. Забыл даже, что писал это))

    ОтветитьУдалить
  5. Очень жаль, что исходники не сохранились =(

    ОтветитьУдалить