Экспорт объектов в формате UMIDump 2.0 средствами API на примере заказов — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
 
(не показаны 3 промежуточные версии этого же участника)
Строка 1: Строка 1:
 +
'''Актуально для версии 2.9'''
 +
<br/>
 
'''Задача:''' Экспортировать объекты, экспорт/импорт которых не поддерживаются через модуль "Обмен данными" <br />
 
'''Задача:''' Экспортировать объекты, экспорт/импорт которых не поддерживаются через модуль "Обмен данными" <br />
 
'''Частный пример:''' Экспорт-Импорт списка заказов для переноса их из одной системы UMI.CMS в другую.
 
'''Частный пример:''' Экспорт-Импорт списка заказов для переноса их из одной системы UMI.CMS в другую.
Строка 27: Строка 29:
 
Далее, в модуле "Обмен данными" мы создаем новый Импорт в формате UMIDump2.0, указываем полученный нами файл и производим импорт данных.
 
Далее, в модуле "Обмен данными" мы создаем новый Импорт в формате UMIDump2.0, указываем полученный нами файл и производим импорт данных.
  
Аналогичным образом мы можем экспортировать любые другие объекты или страницы.
+
Аналогичным образом мы можем экспортировать любые другие объекты.
Для этого потребуется изменить либо 1 в случае объектов либо 2 строчки кода в случае страниц.
+
Для этого потребуется изменить 1 строчку кода.
  
Если мы экспортируем страницы, то нам потребуется изменить строку:
+
Нам потребуется изменить тип экспортируемых объектов в строке:
<source lang="php">
 
$sel = new selector('objects');
 
</source>
 
на
 
<source lang="php">
 
$sel = new selector('pages');
 
</source>
 
 
 
А также потребуется изменить тип экспортируемых объектов в строке:
 
 
<source lang="php">
 
<source lang="php">
 
$sel->types('object-type')->name('emarket', 'order');
 
$sel->types('object-type')->name('emarket', 'order');
Строка 48: Строка 41:
 
1) Список пользователей: $sel->types('object-type')->name('users', 'user');<br />
 
1) Список пользователей: $sel->types('object-type')->name('users', 'user');<br />
 
2) Список подписчиков на рассылку: $sel->types('object-type')->name('dispatches', 'subscriber');<br />
 
2) Список подписчиков на рассылку: $sel->types('object-type')->name('dispatches', 'subscriber');<br />
3) Страницы сайта:<br />
+
3) Экспорт блогов: $sel->types('object-type')->name('blogs20', 'blog');<br />
$sel = new selector('pages');<br />
+
 
$sel->types('object-type')->name('content', 'page');<br />
+
По желанию, Вы можете также изменить идентификатор экспорта: new xmlExporter('orders'); и название выходного файла: file_put_contents('orders.xml', $result->saveXml());
4) Страницы товаров:<br />
 
$sel = new selector('pages');<br />
 
$sel->types('object-type')->name('catalog', 'object');<br /><br />
 
  
Тестировалось на версии 2.8.5.3
+
[[Категория:API]][[Категория:Модуль Обмен данными]]

Текущая версия на 17:05, 7 июня 2013

Актуально для версии 2.9
Задача: Экспортировать объекты, экспорт/импорт которых не поддерживаются через модуль "Обмен данными"
Частный пример: Экспорт-Импорт списка заказов для переноса их из одной системы 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 строчку кода.

Нам потребуется изменить тип экспортируемых объектов в строке:

$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->types('object-type')->name('blogs20', 'blog');

По желанию, Вы можете также изменить идентификатор экспорта: new xmlExporter('orders'); и название выходного файла: file_put_contents('orders.xml', $result->saveXml());