Описание формата

Формат UMIDump 2.0 представляет собой структурированный XML-ресурс, описывающий сущности системы (объекты и страницы) и их зависимости, а также типы данных системы, необходимые для построения этих сущностей.

Внимание: Поскольку при импорте больших объемов данных производится их автоматическая разбивка, необходимо организовывать секции именно в указанном порядке. При создании страниц необходимо соблюдать последовательный порядок импорта: импортировать вложенные страницы после родительских, а при создании типов данных - дочерние типы после родительских.

 

Структура формата выглядит следующим образом:


<umidump version="2.0">

  <meta>
   <site-name>umicms.demo site</site-name>
    <domain>example.com</domain>
    <lang>ru</lang>
    <source-name>umiDump20</source-name>
    <generate-time> ... </generate-time>
    <branches> ... </branches>
  </meta>
  
  <registry>
    <key path="settings" val=""/>
    <key path="settings/default_module_admin" val="content"/>
    ...
  </registry>
  
  <directories>
    <directory path="./css" name="css">/css</directory>
    <directory path="./images" name="images">/images</directory>
    ...
  </directories>
  
  <files>
    <file path="./files/testfile.txt" size="4" ext="txt" hash="098f6...7b4f6" name="testfile.txt">/files/testfile.txt</file>
    <file path="./css/design/__common.css" size="72" ext="css" hash="66ccd...bd566a" name="__common.css">/css/design/__common.css</file>
    ... 
  </files>
  
  <langs>
    <lang id="1" prefix="ru" is-default="1" is-current="1">Русский</lang>
    <lang id="7" prefix="en">English</lang>
    ...
  </langs>
  
  <domains>
    <domain id="1" host="example.com" lang-id="1" is-default="1">
    ...
    </domain>
  </domains>
  
  <templates>
    <template id="2" title="Основной" filename="default.xsl" domain-id="1" lang-id="1" is-default="1"/>
    ...
  </templates>
  
  <datatypes>
    <datatype name="Кнопка-флажок" data-type="boolean"/>
    ...
  </datatypes>
  
  <types>
    <type id="6" guid="users-users" title="Группы пользователей" parent-id="0" guide="guide" locked="locked">
      ...
    </type>
      ...
  </types>
  
  <objects>
    <object id="2374" guid="users-users-2374" name="Зарегистрированные пользователи" type-id="6">
      ...
    </object>
    ...
  </objects>
   
  <pages>
    <page id="905" parentId="0" link="/testovyj_razdel/" is-active="1" object-id="30555" type-id="9" alt-name="testovyj_razdel" lang-id="1" domain-id="1">
      ...
    </page>
      ...
  </pages>
 
  <relations>
    <relation type-id="4" field-name="groups">
      ...    
    </relation> 
    ...
  </relations>
  
  <options>
    <entity object-id="30556" field-name="stores_state">
      ...
    </entity>
    ...
  </options>
  
  <restrictions>
    <restriction id="1" prefix="discount" title="Размер скидки" field-type="float" is-multiple=""/>
   ...
  </restrictions>
  
  <permissions>
    <permission object-id="27085">
      ...
    </permission>
    ...
  </permissions>
  
  <hierarchy>
    <relation id="2" ord="2" parent-id="0"/>
    ...
  </hierarchy>
  
</umidump>

Как можно видеть, структура формата включает 16 секций, описываемых содержимым следующих тегов:

  1. тег meta — содержимое описывает сайт, домен, используемый язык, время генерации, и список корневых элементов (страниц)

  2. тег registry — содержимое описывает список экспортируемых или импортируемых записей реестра

  3. тег directories — содержимое описывает список директорий, которые должны быть созданы при импорте

  4. тег files — содержимое описывает список экспортируемых или импортируемых файлов

  5. тег langs — содержимое описывает список экспортируемых или импортируемых языков

  6. тег domains — содержимое описывает список экспортируемых или импортируемых доменов

  7. тег templates — содержимое описывает список экспортируемых или импортируемых шаблонов страниц

  8. тег datatypes — содержимое описывает список экспортируемых или импортируемых типов полей, используемых типами данных

  9. тег types — содержимое описывает список экспортируемых или импортируемых типов данных

  10. тег objects — содержимое описывает список экспортируемых или импортируемых объектов

  11. тег pages — содержимое описывает список экспортируемых или импортируемых типов страниц

  12. тег relations — содержимое описывает список экспортируемых или импортируемых полей, значениями которых являются элементы справочников или ссылки на дерево (поля типов relation или symlink)

  13. тег options — содержимое описывает список экспортируемых или импортируемых полей типа option

  14. тег restrictions — содержимое описывает список экспортируемых или импортируемых ограничений на значение полей

  15. тег permissions — содержимое описывает список экспортируемых или импортируемых прав пользователей

  16. тег hierarchy — содержимое описывает иерархию страниц

Рассмотрим содержимое каждого тега подробнее.

Секция meta

Тег meta описывает общую информации о текущем импорте или экспорте.

Пример содержимого

<meta>
  <site-name>umi.cms test site</site-name>
  <domain>example.com</domain>
  <lang>ru</lang>
  <source-name>umiDump20</source-name>
  <generate-time>
    <timestamp>1269013825</timestamp>
    <rfc>Fri, 19 Mar 2010 18:50:25 +0300</rfc>
    <utc>2010-03-19T18:50:25+03:00</utc>
  </generate-time>
  <branches>
    <id>1</id>
    <id>2</id>
     ...
  </branches>
</meta>

Элементы и атрибуты

<site-name>

Описание сайта (имя сайта из конфигурации системы).

При импорте игнорируется.

<domain>

Домен с которым производится экспорт или импорт.

При импорте игнорируется.

<lang>

Используемый язык.

При импорте игнорируется.

<source-name>

Идентификатор ресурса.

При интеграции со сторонним сервисом, здесь следует указать имя пространства имен. Используется UMI.CMS для связи идентификаторов сервиса с идентификаторами объектов UMI.CMS. См. также «Особенности экспорта».

<generate-time>

Дата и время генерации UMIDump в различных форматах.

<branches>

Содержит список идентификаторов (элементы id) родительских элементов в иерархии страниц.

При экспорте — это элементы выбранные для экспорта (например разделы каталога).

При импорте игнорируется.

Секция registry

Тег registry описывает список экспортируемых или импортируемых записей реестра.

Пример содержимого

<registry>
  <key path="settings" val=""/>
  <key path=settings/default_module_admin" val="content"/>
</registry>

Элементы и атрибуты

<key>

Ветвь, описывающая отдельную запись реестра.

@path

Имя или путь до записи реестра.

@val

Значение записи реестра.

Секция directories

Тег directories описывает директории, которые должны быть созданы при импорте.

Пример содержимого

<directories>
  <directory path="./css" name="css">/css
  </directory>
  <directory path="./images" name="images">/images
</directories>

Элементы и атрибуты

<directory>

Ветвь, описывающая отдельную папку.

@path

Описывает путь до исходной директории файла.

@name

Имя директории.

Секция files

Тег files описывает список экспортируемых или импортируемых файлов.

Пример содержимого

<files>
  <file path="./files/testfile.txt" size="4" ext="txt" hash="098f6bcd4621d373cade4e832627b4f6" name="testfile.txt">/files/testfile.txt
  </files>
  <file path="./css/design/__common.css" size="72" ext="css" hash="66ccd0b74b3ddbb1b5fe14b697bd566a" name="__common.css">/css/design/__common.css
  </files>
</files>

Элементы и атрибуты

<file>

Ветвь, описывающая отдельный файл.

@path

Описывает путь до источника файла.

@name

Имя файла.

@size

Размер файла.

@ext

Расширение файла.

@hash

Hash-сумма файла.

Секция langs

Тег langs описывает список экспортируемых или импортируемых языков.

Пример содержимого

<langs>
  <lang id="1" prefix="ru" is-default="1" is-current="1">
 Русский
  </lang>
 <lang id="7" prefix="en">
 English
  </lang>
</langs>

Элементы и атрибуты

<lang>

Ветвь, описывающая конкретный язык.

@id

Числовой идентификатор языка.

При импорте указывать обязательно.

@prefix

Строковый идентификатор языка.

@is-default

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

@is-current

Является ли данный язык текущим для домена, с которым производится экспорт или импорт.

Секция domains

Тег domains описывает список экспортируемых или импортируемых доменов.

Пример содержимого

<domains>
  <domain id="1" host="example.com" lang-id="1" is-default="1">
      <domain-mirror id="1" host="example.ru"/>
  </domain>
</domains>

Элементы и атрибуты

<domain>

Ветвь, описывающая отдельный домен.

@id

Числовой идентификатор домена.

@host

Имя хоста домена.

@lang-id

Числовой идентификатор языка, который является основным на данном домене.

@is-default

Является ли данный домен основным.

<domain-mirror>

Ветвь, описывающая зеркало домена.

@id

Числовой идентификатор зеркала.

@host

Имя хоста зеркала домена.

Секция templates

Тег templates описывает список экспортируемых или импортируемых шаблонов страниц.

Пример содержимого

<templates>
  <template id="2" title="Основной" filename="default.xsl" domain-id="1" lang-id="1" is-default="1"/>
</templates>

Элементы и атрибуты

<template>

Ветвь, описывающая отдельный шаблон.

@id

Числовой идентификатор шаблона.

@title

Название шаблона.

@filename

Имя файла этого шаблона. (Полный путь относительно папки шаблонов: для XSLT - xsltTpls, для TPL - TPLs/content).

@domain-id

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

@lang-id

Атрибут, указывающий идентификатор языка, для которого используется данный шаблон.

@is-default

Является ли данный шаблон основным для домена, на котором он используется.

Секция datatypes

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

Пример содержимого

<datatypes>
  <datatype name="Кнопка-флажок" data-type="boolean"/>
  <datatype name="Выпадающий список с множественным выбором" data-type="relation" multiple="multiple"/>
  <datatype name="Выпадающий список" data-type="relation"/>
</datatypes>

Элементы и атрибуты

<datatype>

Ветвь, описывающая отдельный тип поля.

@name

Имя типа.

@data-type

Строковый идентификатор этого типа.

@multiple="multiple"

Указывает значение multiple для типов с возможностью множественного выбора.

Секция types

Тег types описывает список экспортируемых или импортируемых типов данных

Пример содержимого

<types>

  <type id="{root-pages-type}" guid="root-pages-type" title="Раздел сайта" parent-id="0" locked="locked">
    <base/>
    <fieldgroups>
      <group name="common" title="Основные параметры" locked="locked">
        <field name="title" title="Поле TITLE" field-type-id="3" >
          <type id="3" name="Строка" data-type="string"/>
        </field>
        <field name="h1" title="Поле H1" field-type-id="3"  > ... </field>
        <field name="content" title="Контент" field-type-id="18" > ... </field>
        <field name="meta_descriptions" title="Поле meta DESCRIPTIONS" > ... </field>
        <field name="meta_keywords" title="Поле meta KEYWORDS" > ... </field>
        <field name="tags" title="Теги" field-type-id="23" > ... </field>
      </group>
      <group name="menu_view" title="Отображение в меню" locked="locked"> ... </group>
      <group name="more_params" title="Дополнительные параметры" locked="locked"> ... </group>
      <group name="locks" title="Блокировка" visible="visible"> ... </group>
    </fieldgroups>
  </type>

  <type id="10" title="Страница контента" parent-id="{root-pages-type}" locked="locked">
    <base module="content">Страницы контента</base>
    <fieldgroups> ... </fieldgroups>
  </type>

  <type id="9" title="Раздел каталога" parent-id="{root-pages-type}" locked="locked"> ... </type>

  <type id="11" title="Объект каталога" parent-id="{root-pages-type}" locked="locked"> ... </type>

   ...

</types>

Элементы и атрибуты

<type>

Ветвь, описывающая отдельный тип данных.

@id

Идентификатор типа.

При импорте указывать обязательно.

@guid

Строковый идентификатор (используется для системных типов).

@title

Заголовок (название) типа.

@parent-id

Идентификатор родительского типа.

Для типов, у которых непосредственными родителем является тип "Раздел сайта", необходимо указывать подстановку {root-pages-type}.

Для типов, у которые непосредственным родителем является тип "Справочники", необходимо указывать подстановку {root-guides-type}.

Если не указан, будет выставлен parent-id="0", то есть этот тип будет корневым в иерархии типов. Для всех других ситуаций необходимо указывать идентификатор существующего типа.

@locked = "locked"

Обозначает системный (закрытый для редактирования) тип данных.

При импорте необязателен; если указан, будет выставлено указанное значение.

@guide="guide"

Указывает, что этот тип данных можно использовать как справочник (можно записать также как guide="1")

<base>

Указывает базовый тип для этого типа данных. Идентификация происходит на основании атрибутов module и method, если не будет найдено соответствия, то тип будет автоматически создан.

@module

Модуль, который работает с этим типом данных.

@method

Метод модуля (указанного в атрибуте module), который работает с этим типом данных.

<fieldgroups>

Ветвь описывающая список групп полей — элементов <group>.

<group>

Элемент, описывающий группу полей. Идентификация происходит по значению атрибута name.

@name

Название группы полей.

При импорте указывать обязательно.

@title

Заголовок группы полей — будет показан в интерфейсе модуля "Шаблоны данных".

@locked="locked"

Обозначает системную (закрытую для редактирования) группу полей.

При импорте необязателен; если указан, будет выставлено указанное значение.

<field>

Элемент, описывающий отдельное поле. Идентификация происходит по значению атрибута name.

@name

Название поля.

@title

Заголовок поля — будет показан в интерфейсе модуля "Шаблоны данных".

@field-type-id

Идентификатор типа поля.

При импорте игнорируется.

@visible="visible"

Указывает, что поле будет видимым при редактировании типа в модуле "Шаблоны данных".

При импорте необязателен; если указан, будет выставлено указанное значение.

@locked="locked"

Обозначает системное (закрытое для редактирования) поле.

При импорте необязателен; если указан, будет выставлено указанное значение.

@indexable="indexable"

Указывает, что поле будет индексироваться (для поиска по сайту).

При импорте необязателен; если указан, будет выставлено указанное значение.

@filterable="filterable"

Указывает, что поле можно использовать в фильтрах.

При импорте необязателен; если указан, будет выставлено указанное значение.

@required="required"

Указывает, что это поле будет обязательными к заполнению.

При импорте необязателен; если указан, будет выставлено указанное значение.

@guide-id

Если поле выводит данные типа "выпадающий список" или "выпадающий список с множественным выбором", то в этом атрибуте указывается идентификатор соответствующего справочника.

<tip>

Подсказка к полю, появляющаяся при наведении курсора на поле во время редактирования объекта или страницы в административном интерфейсе.

<type>

Описание типа информации, которая хранится в этом поле. Идентификация происходит по атрибуту data-type. Если не описан, будет создан c названием по содержимому атрибута name.

Содержимое может быть одним из следующего списка:

  • Число

    <type name="Число" data-type="int"/>
  • Число с точкой

    <type name="Число с точкой" data-type="float"/>
  • Цена

    <type name="Цена" data-type="price"/>
  • Дата

    <type name="Дата" data-type="date"/>
  • Строка

    <type name="Строка" data-type="string"/>
  • Простой текст

    <type name="Простой текст" data-type="text"/>
  • HTML-текст

    <type name="HTML-текст" data-type="wysiwyg"/>
  • Теги

    <type name="Теги" data-type="tags" multiple="multiple"/>
  • Выпадающий список

    <type name="Выпадающий список" data-type="relation"/>
  • Выпадающий список с множественным выбором

    <type name="Выпадающий список с множественным выбором" 
     data-type="relation" multiple="multiple"/>
  • Изображение

    <type name="Изображение" data-type="img_file"/>
  • Флеш-ролик

    <type name="Флеш-ролик" data-type="swf_file"/>
  • Файл

    <type name="Файл" data-type="file"/>
  • Видеофайл

    <type name="Видео" data-type="video_file"/>
  • Кнопка-флажок

    <type name="Кнопка-флажок" data-type="boolean"/>
  • Пароль

    <type name="Пароль" data-type="password"/>
  • Составное

    <type name="Составное" data-type="optioned" multiple="multiple"/>
  • Счетчик

    <type name="Счетчик" data-type="counter"/>
  • Ссылка на дерево

    <type name="Ссылка на дерево" data-type="symlink" multiple="multiple"/>

Секция objects

Тег objects описывает список импортируемых или экспортируемых объектов.

Пример содержимого

<objects>

  <object id="27622" name="Заказ #1" type-id="755" ownerId="14">
    <properties>
      <group name="order_props">
        <title>Свойства заказа</title>
        <property name="order_items" type="relation" multiple="multiple">
          <title>Наименования заказа</title>
          <value>
            <item id="27816" name="Комбайн" type-id="756" ownerId="14" xlink:href="uobject://27816"/>
          </value>
        </property>
        <property name="number" type="int"> ... </property>
        <property name="customer_id" type="relation"> ... </property>
        <property name="domain_id" type="int"> ... </property>
         ...
      </group>
      <group name="order_payment_props"> ... </group>
      <group name="order_delivery_props"> ... </group>
      <group name="integration_date"> ... </group>
    </properties>
  </object>

  <object id="15" guid="users-users-15" name="Супервайзеры" type-id="6"> ... </object>

   .... 
 
</objects>

Элементы и атрибуты

<object>

Содержимое этого элемента описывает отдельный объект из списка.

@id

Идентификатор объекта.

При импорте указывать обязательно: должен быть уникальным, само значение не важно (см. «Особенности экспорта».).

@guid

Строковый идентификатор (используется для системных объектов).

@name

Название объекта.

При импорте указывать не обязательно. Если указан и объект существует — будет перезаписано. Если не указан и объект еще не существует — будет указано значение вида object#идентификатор_объекта.

@type-id

Идентификатор типа данных, по которому создан этот объект.

При импорте тип с таким id уже должен существовать: либо исходно, либо уже импортирован. Если не существует, объект не будет создан.

@ownerId

Идентификатор владельца объекта — пользователь, который создал этот объект.

При импорте будет установлен id того пользователя, от чьего имени производится импорт, только в том случае, когда нет соответствующей записи в секции permissions. (см. ниже)

@update-only = "1"

Атрибут, определяющий как будет импортироваться этот объект: если объект уже существует, то он будет пропущен и никаких изменений не будет внесено; если же не существует — объект не будет создан.

См. также «Особенности импорта»

<properties>

Ветвь, описывающая свойства объекта — группы полей (элементы <group>), и поля со значениями (элементы <property>).

<group>

Элемент, описывающий группу полей объекта (элементы <property>).

@name

Название группы.

По этому атрибуту происходит идентификация группы, например, в случае, если добавляется новое поле в тип данных (см. ниже property/@allow-runtime-add).

<title>

Заголовок группы полей (будет показан в административном интерфейсе).

<property>

Элемент, описывающий отдельное свойство объекта: поле и значение.

@name

Название свойства. По нему происходит идентификация свойства.

Если не найден в типе данных при импорте, то в случае allow-runtime-add = "1" свойство будет создано в соответствующем типе данных; в ином случае свойство будет проигнорировано.

@allow-runtime-add = "1"

Позволяет управлять изменением типа данных для данного объекта. В случае наличия этого атрибута отсутствующие свойства с этим атрибутом будут добавлены в тип данных для этого объекта в группу.

См. также «Особенности импорта»

@type

Тип данных, хранящихся в этом свойстве.

@multiple="multiple"

Используется для типов "Выпадающий список с множественным выбором" и "Ссылка на дерево".

Примеры содержимого тега <property>:

  • type="int" — число

    <property name="number" type="int">
      <title>Номер заказа</title>
      <value>1</value>
    </property>
  • type="float" — число с точкой

    <property name="total_original_price" type="float">
      <title>Стоимость заказа без скидки</title>
      <value>11000</value>
    </property>
  • type="price" — цена

    <property name="novoe_pole_6" type="price" currency-code="RUR">
      <title>Новое поле_6</title>
      <value xlink:href="udata://emarket/price/14">2300</value>
    </property>

    @xlink:href — при импорте игнорируется.

    @currency-code — если валюта по умолчанию для интернет магазина не совпадает с указанной, то при импорте произойдет пересчет значения из <value> в валюту по умолчанию.

  • type="date" — дата

    <property name="payment_date" type="date">
      <title>Дата оплаты</title>
      <value unix-timestamp="1268921940">Thu, 18 Mar 2010 17:19:00 +0300</value>
    </property>

    Если атрибут unix-timestamp не указан, будет создан при импорте из значения в <value>.

  • type="string" — строка

    <property name="payment_document_num" type="string">
      <title>Номер платежного документа</title>
      <value>ТД000000006</value>
    </property>
  • type="text" — простой текст

    <property name="novoe_pole_1" type="text">
      <title>просто текст</title>
      <value>это поле просто текст</value>
    </property>
  • type="wysiwyg" — HTML-текст

    <property name="novoe_pole_2" type="wysiwyg">
      <title>хтмл-текст</title>
      <value><p>это поле html-текст</p></value>
    </property>
  • type="tags" — теги

    <property name="novoe_pole_3" type="tags">
      <title>Новое поле_3</title>
      <value>тег1</value>
      <value>тег2</value>
      <value>тег3</value>
      <combined>тег1, тег2, тег3</combined>
    </property>
  • type="relation" — выпадающий список

    <property name="delivery_id" type="relation">
    <title>Способ доставки</title>
      <value>
        <item id="27255" name="Самовывоз" type-id="781" ownerId="14" 
         link:href="uobject://27255"/>
      </value>
    </property>

    Если нет соответствующей записи в секции relations, то при импорте значение данных полей игнорируется.

  • type="relation" multiple="multiple" — выпадающий список с множественным выбором

    <property name="order_items" type="relation" multiple="multiple">
      <title>Наименования заказа</title>
      <value>
        <item id="27816" name="Комбайн" type-id="756" ownerId="14" 
         xlink:href="uobject://27816"/>
      </value>
    </property>

    Если нет соответствующей записи в секции relations,то при импорте значение данных полей игнорируется.

  • type="img_file" — изображение

    <property name="novoe_pole_1" type="img_file">
      <title>Новое поле 1</title>
      <value path="./images/cms/data/148820_pic1.jpg"
       folder="/images/cms/data" name="148820_pic1" ext="jpg">
        /images/cms/data/148820_pic1.jpg
      </value>
    </property>

    При импорте важно только значение тега value, остальное будет проигнорировано.

  • type="swf_file" — флеш-ролик

    <property name="novoe_pole_1" type="swf_file">
      <title>флеш-ролик</title>
      <value path="./files/swf_file.swf" folder="/files" name="swf_file" ext="swf">
        /files/swf_file.swf
      </value>
    </property>

    При импорте важно только значение тега value, остальное будет проигнорировано.

  • type="file" — файл

    <property name="novoe_pole_1" type="file">
      <title>файл</title>
      <value path="./files/config_ini.txt" folder="/files" name="config_ini" ext="txt">
       /files/config_ini.txt
      </value>
    </property>

    При импорте важно только значение тега value, остальное будет проигнорировано.

  • type="video" — видеофайл

    <field name="video" title="Видео" visible="visible">
      <type name="Видео" data-type="video_file"/>
      </field>
  • type="optioned" — составное

    <property name="stores_state" type="optioned">
    <title>Состояние на складе</title>
       <value>
           <option int="569" float="1">
              <object id="27147" guid="emarket-store-27147" name="Основной склад" type-id="754" ownerId="14"/>
           </option>
        </value>
     </property>
  • type="counter" — счетчик

    <property name="schetchik" type="counter">
    Счетчик
      <value>65</value>
      </property>
  • type="boolean" — кнопка-флажок

    <property name="need_export" type="boolean">
      <title>Выгружать заказ в 1С при следующем сеансе связи</title>
      <value>1</value>
    </property>
  • type="symlink" — ссылка на дерево

    <property name="related_items" type="symlink">
       Связанные товары
         <value>
            <page id="28989" parentId="18989" link="/razdel/tovar/" is-active="1" object-id="27522" type-id="65464" alt-name="tovar">
               <basetype module="catalog" method="object">Объекты каталога</basetype>
               <name>товар</name>
            </page>
         </value>
      </property>
<default-value>

Этот тег следует указать вместе тега <value> в содержимом элемента <property>, для того, чтобы значение было выставлено только при создании объекта. При повторном импорте, для тех свойств, где стоит <default-value>, уже имеющееся значение не будет перезаписываться.

См. также «Особенности импорта»

Секция pages

Тег pages описывает список импортируемых или экспортируемых страниц.

Пример содержимого

<pages>

  <page id="1" parentId="0" link="/" is-default="1" is-active="1" 
   object-id="27553" type-id="10" update-time="1268823525" alt-name="luchshie_predlozheniya">
    <basetype id="2" module="content">Страницы контента</basetype>
    <name>Лучшие предложения</name>
    <properties>
      <group name="common">
        <title>Основные параметры</title>
        <property name="h1" type="string"> ... </property>
        <property name="content" type="wysiwyg"> ... </property>
      </group>
    </properties>
    <template id="2">default.xsl</template>
  </page>

  <page id="2" parentId="0" link="/shop/" is-active="1"
   object-id="27554" type-id="9" update-time="1268823525" alt-name="shop"> ... </page>

  <page id="3" parentId="2" link="/shop/dvd_tehnika/" is-active="1"
   object-id="27555" type-id="9" update-time="1268823525" alt-name="dvd_tehnika"> ... </page>

   ...

</pages>

Элементы и атрибуты

<page>

Содержимое элемента описывает отдельную страницу из списка.

@id

Идентификатор страницы.

При импорте указывать обязательно: должен быть уникальным, само значение не важно (см. «Особенности экспорта».).

@parentId

Идентификатор родительской страницы.

Если не указать при импорте, будет выставлено parentId = '0', и страница попадет в корень сайта.

@link

Ссылка на страницу.

@is-default

Указывает является ли эта страница главной страницей сайта или нет.

При импорте игнорируется.

@is-active

Указывает активна или нет эта страница.

При импорте будет установлено значение, если указано явно.

@object-id

Идентификатор страницы как объекта.

При импорте игнорируется.

@type-id

Идентификатор типа данных, по которому создана страница.

При импорте тип с таким id уже должен существовать: либо исходно, либо уже импортирован. Если не существует, страница не будет создана.

@update-time

Время последнего изменения страницы в UNIX TIMESTAMP

@alt-name

Альтернативное имя страницы (используется в URL).

При импорте выставляется при создании страницы и далее при помощи импорта поменять нельзя. В случае, если не указан при создании, будет взято транслитерированное название

@update-only = "1"

Атрибут, определяющий как будет импортироваться эта страница. Если страница уже существует, то она будет пропущена и никаких изменений не будет внесено; если же не существует — объект будет создан.

См. также «Особенности импорта»

<basetype>

Элемент описывающий базовый тип для этой страницы (назначение страниц этого типа).

При импорте не учитывается.

@module

Модуль, который работает со страницами этого типа.

@method

Метод указанного модуля, который работает со страницами этого типа.

<name>

Название страницы.

При импорте может быть изменен, если указан.

<properties>

Ветвь, описывающая свойства страницы: группы полей (элементы <group>) и поля (элементы <property>).

<group>

Элемент, описывающий группу полей.

@id

Идентификатор группы полей.

@name

Системное название группы полей.

<title>

Заголовок группы полей. Выводится в административном интерфейсе.

<property>

Элемент описывающий отдельное поле и информацию в нем. Описание атрибутов и примеры содержимого — см. выше в описании элемента proprerty для секции objects.

<template>

Описывает шаблон, используемый этой страницей для отображения. Система будет искать этот шаблон в списке существующих, поэтому шаблон с таким именем должен быть уже зарегистрирован.

@id

Идентификатор шаблона.

При импорте игнорируется, идентификатор будет установлен системой самостоятельно.

<default-template>

Если указывать этот тег вместо <template>, то будет установлен только при создании страницы, а в дальнейшем игнорируется. Система будет искать этот шаблон в списке существующих, поэтому шаблон с таким именем должен быть уже зарегистрирован.

<default-active>

Если указать этот тег, то активность будет установлена при импорте только при создании страницы, в дальнейшем содержимое тега будет игнорироваться.

<default-visible>

Если указать этот тег, то видимость в меню будет установлена при импорте только при создании страницы, в дальнейшем содержимое тега будет игнорироваться.

Секция relations

Тег relations описывает поля, значениями которых являются элементы справочников или ссылки на дерево (поля типов relation или symlink).

Пример содержимого

<relations>
  <relation type-id="4" field-name="groups">
     <guide id="6"/>
  </relation>
  <relation object-id="27571" field-name="country">
     <object id="26341"/>
  </relation>
  <relation object-id="30557" field-name="pohozhie">
     <page id="906"/>
  </relation>
  <relation page-id="907" field-name="pohozhie">
     <page id="906"/>
  </relation>
</relations>
<relation>

Описывает связку «справочник – поле» (I) либо значения полей типа relation с множественным или единственным выбором(II), либо значение полей типа symlink для страниц или объектов (III).

I.
@field-name

Имя поля, для которого установлен справочник.

@type-id

Идентификатор типа, в котором используется поле.

<guide>

Указывает справочник поля.

@id

Идентификатор типа, который является справочником.

II-III.
@field-name

Имя поля, для поля которого установлено значение.

@object-id

Идентификатор объекта, для поля которого установлено значение.

@page-id

Идентификатор страницы, для поля которой установлено значение.

В случае, когда поле является полем типа relation, используется вложенный тег <object>, а когда поле является полем типа symlink, используется вложенный тег <page>.
<object>

Указывает объект, на который ссылается поле.

@id

Идентификатор объекта. Объект с таким идентификатором должен быть описан ранее в секции objects

<page>

Указывает страницу, на которую ссылается поле (для типа symlink).

@id

Идентификатор страницы. Страница с таким идентификатором должна быть описана ранее в секции pages

Секция options

Тег options описывает список всех полей типа option.

Пример содержимого

<options>
  <entity object-id="30556" field-name="stores_state">
     <option int="569" float="1" object-id="27147"/>
  </entity>
  <entity page-id="906" field-name="stores_state">
     <option int="569" float="1" object-id="27147"/>
  </entity>
</templates>
<entity>

Элемент, описывающий либо страницу, либо объект, для которого устанавливается значение.

@field-name

Имя поля, для которого устанавливается значение.

@object-id

Идентификатор объекта.

@page-id

Идентификатор страницы.

<option>

Описывает значения всех типов данного поля. Атрибуты формируются в зависимости от того, к какому типу относится поле, для которого устанавливается значение.

Секция restrictions

Тег restrictions описывает список всех экспортируемых или импортируемых ограничений на значение полей.

Пример содержимого

<restrictions>
  <restriction id="1" prefix="discount" title="Размер скидки" field-type="float" is-multiple=""/>
  <restriction id="2" prefix="email" title="E-mail" field-type="string" is-multiple="">
     <field field-name="email" type-id="11"/>
  </restriction>
  <restriction id="3" prefix="httpUrl" title="Web-адрес" field-type="string" is-multiple=""/>
  <restriction id="4" prefix="systemDomain" title="Домен системы" field-type="int" is-multiple=""/>
  <restriction id="5" prefix="objectType" title="Тип данных" field-type="int" is-multiple=""/>
</restrictions>
<restriction>

Элемент, описывающий ограничение (и поля, на которые накладывается ограничение, если такие есть).

@id

Числовой идентификатор ограничения.

@prefix

Строковый идентификатор ограничения.

@title

Название ограничения.

@fieldtype

Тип поля, на которое накладывается ограничение.

@is-multiple="multiple"

Указывает, является ли поле полем с множественным выбором.

<field>

Описывает отдельное поле, на которое накладывается ограничение.

@field-name

Имя поля, на которое накладывается ограничение.

@type-id

Идентификатор типа, к которому привязано поле.

Секция permissions

Тег permissions описывает список всех экспортируемых или импортируемых прав пользователей.

Пример содержимого

<permissions>
   <permission object-id="27085">
      <owner id="14"/>
   </permission>
   <permission object-id="2374">
      <module name="users" method="settings" allow="1"/>
      <module name="eshop" method="personal" allow="1"/>
      <module name="blogs20" method="add" allow="1"/>
   </permission>
 </permissions>
<permission>

Элемент, описывающий объект, для которого установлены права.

@object-id

Элемент, описывающий идентификатор объекта.

<owner>

Элемент, описывающий владельца объекта, если таковой имеется.

@id

Числовой идентификатор объекта типа "Пользователь", который является владельцем.

<module>

Описывает права на модули и методы, если объект сам является объектом типа "Пользователь".

@name

Имя модуля.

@method

Имя метода.

@allow="1"

Указывает на разрешение связки "модуль - метод".

Секция hierarchy

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

Пример содержимого

<hierarchy>
   <relation id="2" ord="2" parent-id="0"/>
   <relation id="3" ord="1" parent-id="2"/>
   <relation id="4" ord="1" parent-id="3"/>
 </hierarchy>
<relation>

Элемент, описывающий положение отдельной страницы.

@id

Элемент, описывающий идентификатор страницы.

@ord

Элемент, описывающий порядковый номер страницы в иерархии.

@parent-id

Элемент, описывающий идентификатор родительской страницы. Значение "0" указывает на то, что страница находится в корне сайта.