В этом разделе можно взять готовые, работающие решения для импорта в формате UMIDump 2.0.
В этом XML-файле приводится пример импорта двух разделов каталога с одним товаром в каждом из них, при этом один товар назначается рекомендуемым другому, что иллюстрирует импорт поля типа symlink.
<umidump version="2.0">
<meta>
<!-- определяем название XML-ресурса -->
<source-name>MyXMLSource</source-name>
</meta>
<types>
<!--описание типа для раздела каталога-->
<!-- parent-id="{root-pages-type} определяет привязку к типу "раздел сайта" -->
<type id="catalog_category" parent-id="{root-pages-type}">
<!-- определяем базовый тип при помощи атрибутов @module и @method -->
<base module="catalog" method="category" />
</type>
<!-- описание типа для объекта каталога -->
<!-- parent-id="{root-pages-type} определяет привязку к типу "раздел сайта" -->
<type id="catalog_object" parent-id="{root-pages-type}">
<!-- определяем базовый тип при помощи атрибутов @module и @method -->
<base module="catalog" method="object" />
</type>
<!-- описание типа для объекта каталога "Фильтр" -->
<type id="filter" title="Фильтр" parent-id="catalog_object">
<!-- определяем базовый тип при помощи атрибутов @module и @method -->
<base module="catalog" method="object" />
<fieldgroups>
<group name="filter_props" title="Свойства фильтров" visible="visible">
<!-- поле типа "выпадающий список" -->
<field name="filter_type" title="Тип фильтрации" visible="visible">
<type data-type="relation"/>
</field>
<!-- поле типа "число" -->
<field name="power" title="Ресурс" visible="visible">
<type data-type="int"/>
</field>
</group>
</fieldgroups>
</type>
<!-- описание типа для объекта каталога "Чайник" -->
<type id="kettle" title="Чайник" parent-id="catalog_object">
<!-- определяем базовый тип при помощи атрибутов @module и @method -->
<base module="catalog" method="object" />
<fieldgroups>
<group name="kettle_props" title="Свойства чайников" visible="visible">
<!-- поле типа "выпадающий список" -->
<field name="warmer_type" title="Тип нагревательного элемента" visible="visible">
<type data-type="relation"/>
</field>
<!-- поле типа "число" -->
<field name="power" title="Мощность" visible="visible">
<type data-type="int"/>
</field>
</group>
<group name="recommend" title="Рекомендуемые товары" visible="visible">
<!-- поле типа "ссылка на дерево" -->
<field name="recommend" title="Рекомендуемые товары" visible="visible">
<type name="Ссылка на дерево" data-type="symlink" multiple="multiple"/>
</field>
</group>
</fieldgroups>
</type>
</types>
<pages>
<!-- описание раздела каталога "Фильтры" -->
<page id="category_1" is-active="1" type-id="catalog_category" alt-name="filters">
<name>Фильтры</name>
<properties>
<group name="common">
<property name="title">
<!-- зададим значение, применяющееся только при создании -->
<default-value>Фильтры</default-value>
</property>
</group>
</properties>
<!-- определим шаблон, задающийся только при создании -->
<default-template>category.xsl</default-template>
</page>
<!-- описание раздела каталога "Чайники" -->
<page id="category_2" is-active="1" type-id="catalog_category" alt-name="kettels">
<name>Чайники</name>
<properties>
<group name="common">
<property name="title">
<!-- зададим значение, применяющееся только при создании -->
<default-value>Чайники</default-value>
</property>
</group>
</properties>
<!-- определим шаблон, задающийся только при создании -->
<default-template>category.xsl</default-template>
</page>
<!-- описание объекта каталога - фильтр -->
<page id="filter_1" is-active="1" type-id="filter" parentId="category_1" alt-name="Thomas_TWIN">
<name>Thomas TWIN TT Aquafilter</name>
<properties>
<group name="cleaner_props">
<!-- то что это поле "выпадающий список", уже определили в типах выше -->
<property name="filter_type">
<value>
<item name="микрофильтр / ультрафильтр"/>
</value>
</property>
<!-- то что это поле "число", уже определили в типах выше -->
<property name="power">
<value>1700</value>
</property>
</group>
</properties>
</page>
<!-- описание объекта каталога - чайник -->
<page id="kettle_1" is-active="1" type-id="kettle" parentId="category_2" alt-name="Philips_4667">
<name>Philips HD 4667</name>
<properties>
<group name="kettel_props">
<!-- то что это поле "выпадающий список", уже определили в типах выше -->
<property name="warming_type">
<value>
<item name="дисковый нагреватель"/>
</value>
</property>
<!-- то что это поле "число", уже определили в типах выше -->
<property name="power">
<value>2400</value>
</property>
</group>
</properties>
</page>
</pages>
<!-- объект каталога - фильтр - назначается рекомендуемым к объекту каталога - чайник -->
<relations>
<relation page_id="kettle_1" field-name="recommend">
<page id="filter_1">
</relation>
</relations>
</umidump>
Пример, иллюстрирующий динамическое добавление поля к объекту каталога, без описания его в секции type.
<umidump version="2.0">
<meta>
<!-- определяем название XML-ресурса -->
<source-name>MyXMLSource</source-name>
</meta>
<types>
<!--описание типа для раздела каталога-->
<type id="catalog_object" guid="catalog-object" title="объект каталога" parent-id="{root-pages-type}" locked="locked">
</types>
<pages>
<!-- описание объекта каталога - чайник -->
<page id="135" is-active="1" type-id="catalog_object" parentId="0" alt-name="kettle" link="/market/kettle/">
<basetype> module="catalog" method="object">Объекты каталога</basetype>
<name>Чайник</name>
<!-- динамическое добавление свойств к объекту каталога -->
<properties>
<group name="recommend">
<title>Рекомендуемые товары</title>
<property id="389" name="warming_type" type="symlink" allow-runtime-add="1">
<type name="Ссылка на дерево" data-type="symlink" multiple="multiple">
<title>Рекомендуемые товары</title>
<value>
<!-- в качестве значения в поле передается объект каталога - фильтр -->
<page id="5" parentId="3" link="/market/kettle/filter/" is-active="1" object-id="398" type-id="120" alt-name="filter_xs87">
<basetype> module="catalog" method="object">Объекты каталога</basetype>
<name>Фильтр для воды</name>
</page>
</value>
</property>
</group>
</properties>
<template>inner.tpl</template>
</page>
<!-- описание объекта каталога - фильтр -->
<page id="5" is-active="1" type-id="catalog_object" parentId="0" alt-name="filter_xs87" link="/market/kettle/filter/">
<basetype> module="catalog" method="object">Объекты каталога</basetype>
<name>Фильтр для воды</name>
<template>inner.tpl</template>
</page>
</pages>
<relations>
<!-- связываем объект каталога - фильтр - с объектом каталога - чайник -->
<relation page_id="135" field-name="recommend">
<page id="5"/>
</relation>
</relations>
</umidump>