Экспорт объектов в формате UMIDump 2.0 средствами API на примере заказов — различия между версиями
Velross (обсуждение | вклад) |
Velross (обсуждение | вклад) |
||
Строка 26: | Строка 26: | ||
Далее, в модуле "Обмен данными" мы создаем новый Импорт в формате UMIDump2.0, указываем полученный нами файл и производим импорт данных. | Далее, в модуле "Обмен данными" мы создаем новый Импорт в формате UMIDump2.0, указываем полученный нами файл и производим импорт данных. | ||
+ | |||
+ | Аналогичным образом мы можем экспортировать любые другие объекты или страницы. | ||
+ | Для этого потребуется изменить либо 1 в случае объектов либо 2 строчки кода в случае страниц. | ||
+ | |||
+ | Если мы экспортируем страницы, то нам потребуется изменить строку: | ||
+ | <source lang="php"> | ||
+ | $sel = new selector('objects'); | ||
+ | </source> | ||
+ | на | ||
+ | <source lang="php"> | ||
+ | $sel = new selector('pages'); | ||
+ | </source> | ||
+ | |||
+ | А также потребуется изменить тип экспортируемых объектов в строке: | ||
+ | <source lang="php"> | ||
+ | $sel->types('object-type')->name('emarket', 'order'); | ||
+ | </source> | ||
+ | |||
+ | Все доступные типы объектов можно посмотреть в настройках модуля "Шаблоны данных". | ||
+ | Вот только некоторые примеры: | ||
+ | 1) Список пользователей: $sel->types('object-type')->name('users', 'user'); | ||
+ | 2) Список подписчиков на рассылку: $sel->types('object-type')->name('dispatches', 'subscriber'); | ||
+ | 3) Страницы сайта: | ||
+ | $sel = new selector('pages'); | ||
+ | $sel->types('object-type')->name('content', 'page'); | ||
+ | 4) Страницы товаров: | ||
+ | $sel = new selector('pages'); | ||
+ | $sel->types('object-type')->name('catalog', 'object'); | ||
Тестировалось на версии 2.8.5.3 | Тестировалось на версии 2.8.5.3 |
Версия 10:55, 4 октября 2012
Задача: Экспортировать объекты, экспорт/импорт которых не поддерживаются через модуль "Обратная связь"
Частный пример: Экспорт-Импорт списка заказов для переноса их из одной системы UMI.CMS в другую.
В стандартных возможностях модуля "Обмен данными" присутствует экспорт заказов в формат CommerceML 2.0, но импорт заказов из данного формата отсутствует.
Для решения поставленной задачи, с помощью средств API[1], мы можем написать автономный скрипт на php, организующий экспорт необходимой нам информации в формат UMIDump 2.0 (получится xml-файл), а уже из него в модуле "Обмен данными" мы сможем произвести импорт полученной информации в нужную нам систему.
Вот скрипт, который реализует экспорт заказов в файл orders.xml, который появится в корне сайта после завершения работы скрипта. Сам скрипт необходимо также запускать из корня сайта.
<?php
include('standalone.php');
$sel = new selector('objects');
$sel->types('object-type')->name('emarket', 'order');
$orders = $sel->result();
$exporter = new xmlExporter('orders');
$exporter->addObjects($orders);
$result = $exporter->execute();
file_put_contents('orders.xml', $result->saveXml());
?>
Далее, в модуле "Обмен данными" мы создаем новый Импорт в формате UMIDump2.0, указываем полученный нами файл и производим импорт данных.
Аналогичным образом мы можем экспортировать любые другие объекты или страницы. Для этого потребуется изменить либо 1 в случае объектов либо 2 строчки кода в случае страниц.
Если мы экспортируем страницы, то нам потребуется изменить строку:
$sel = new selector('objects');
на
$sel = new selector('pages');
А также потребуется изменить тип экспортируемых объектов в строке:
$sel->types('object-type')->name('emarket', 'order');
Все доступные типы объектов можно посмотреть в настройках модуля "Шаблоны данных". Вот только некоторые примеры: 1) Список пользователей: $sel->types('object-type')->name('users', 'user'); 2) Список подписчиков на рассылку: $sel->types('object-type')->name('dispatches', 'subscriber'); 3) Страницы сайта: $sel = new selector('pages'); $sel->types('object-type')->name('content', 'page'); 4) Страницы товаров: $sel = new selector('pages'); $sel->types('object-type')->name('catalog', 'object');
Тестировалось на версии 2.8.5.3