Логотип

Документация по макросам и шаблонам UMI.CMS

Типы данных: протокол UType

Протокол UType предназначен для получения в XML-формате любого типа данных системы UMI.CMS по его идентификатору.

Просмотр типов данных в виде XML

Чтобы увидеть результат запроса по этому протоколу, в адресной строке браузера следует указать числовой (id), либо буквенный (guid) идентификатор выбранного типа данных. Таким образом, сначала мы пишем http://ваш_сайт/utype/ и затем идентификатор типа данных, например http://ваш_сайт/utype/78, либо http://ваш_сайт/utype/catalog-object, где "78" и "catalog-object" - это числовой и буквенный, соответственно, идентификаторы типа данных "Объект каталога". Вы увидите страницу, подобную представленной:

<?xml version="1.0" encoding="utf-8"?>
<udata xmlns:xlink="http://www.w3.org/TR/xlink" generation-time="0.020471">
 <type id="78" guid="catalog-object" title="Объект каталога" parent-id="25" locked="locked">
  <base id="55" module="catalog" method="object">Объекты каталога</base>
  <fieldgroups>
   <group id="192" name="common" title="Основные параметры" locked="locked">
    <field id="115" name="title" title="Поле TITLE" field-type-id="13" visible="visible" inheritable="inheritable" locked="locked" indexable="indexable">
     <type id="13" name="Строка" data-type="string"></type>
    </field>
    <field id="116" name="h1" title="Поле H1" field-type-id="13" visible="visible" inheritable="inheritable" locked="locked" indexable="indexable">
     <type id="13" name="Строка" data-type="string"></type>
    </field>
    <field id="119" name="meta_keywords" title="Поле meta KEYWORDS" field-type-id="13" visible="visible" inheritable="inheritable" locked="locked" indexable="indexable">
     <type id="13" name="Строка" data-type="string"></type>
    </field>
    <field id="118" name="meta_descriptions" title="Поле meta DESCRIPTIONS" field-type-id="13" visible="visible" inheritable="inheritable" locked="locked" indexable="indexable">
     <type id="13" name="Строка" data-type="string"></type>
    </field>
    <field id="120" name="tags" title="Теги" field-type-id="16" visible="visible" locked="locked">
     <type id="16" name="Теги" data-type="tags" multiple="multiple"></type>
    </field>
   </group>
   <group id="193" name="menu_view" title="Отображение в меню" locked="locked">
    <field id="121" name="menu_pic_ua" title="Изображение неактивного раздела" field-type-id="6" visible="visible" locked="locked">
     <type id="6" name="Изображение" data-type="img_file"></type>
    </field>
    <field id="122" name="menu_pic_a" title="Изображение активного раздела" field-type-id="6" visible="visible" locked="locked">
     <type id="6" name="Изображение" data-type="img_file"></type>
    </field>
    <field id="123" name="header_pic" title="Изображение для заголовка" field-type-id="6" visible="visible" locked="locked">
     <type id="6" name="Изображение" data-type="img_file"></type>
    </field>
   </group>
   <group id="194" name="more_params" title="Дополнительные параметры" locked="locked">
    <field id="124" name="robots_deny" title="Запретить индексацию поисковиками" field-type-id="1" visible="visible" inheritable="inheritable" locked="locked">
     <type id="1" name="Кнопка-флажок" data-type="boolean"></type>
    </field>
    <field id="127" name="is_unindexed" title="Исключить из поиска" field-type-id="1" visible="visible" inheritable="inheritable" locked="locked">
     <type id="1" name="Кнопка-флажок" data-type="boolean"></type>
    </field>
   </group>
   <group id="195" name="cenovye_svojstva" title="Ценовые свойства" visible="visible">
    <field id="268" name="price" title="Цена" field-type-id="10" visible="visible" locked="locked" filterable="filterable">
     <type id="10" name="Цена" data-type="price"></type>
    </field>
   </group>
   <group id="196" name="catalog_option_props" title="Опционные свойства" visible="visible">
    <field id="382" name="furnish" title="Отделка" field-type-id="8" visible="visible" guide-id="109">
     <type id="8" name="Составное" data-type="optioned" multiple="multiple"></type>
    </field>
   </group>
   <group id="197" name="catalog_stores_props" title="Склады" visible="visible">
    <field id="269" name="stores_state" title="Состояние на складе" field-type-id="8" visible="visible" guide-id="47">
     <type id="8" name="Составное" data-type="optioned" multiple="multiple"></type>
    </field>
    <field id="270" name="reserved" title="Зарезервировано" field-type-id="7">
     <tip>Количество зарезервированных товаров</tip>
     <type id="7" name="Число" data-type="int"></type>
    </field>
    <field id="271" name="common_quantity" title="Общее количество на складах" field-type-id="7" visible="visible">
     <type id="7" name="Число" data-type="int"></type>
    </field>
   </group>
   <group id="198" name="rate_voters" title="Количество проголосовавших" locked="locked">
    <field id="128" name="rate_voters" title="Количество проголосовавших" field-type-id="7" locked="locked">
     <type id="7" name="Число" data-type="int"></type>
    </field>
    <field id="129" name="rate_sum" title="Сумма баллов" field-type-id="7" locked="locked">
     <type id="7" name="Число" data-type="int"></type>
    </field>
   </group>
   <group id="200" name="locks" title="Блокировка" visible="visible" locked="locked">
    <field id="134" name="locktime" title="Время блокировки" field-type-id="3" visible="visible" locked="locked">
     <type id="3" name="Дата" data-type="date"></type>
    </field>
    <field id="135" name="lockuser" title="Блокирующий пользователь" field-type-id="7" visible="visible" locked="locked">
     <type id="7" name="Число" data-type="int"></type>
    </field>
   </group>
   <group id="273" name="opisanie_tovara" title="Описание товара" visible="visible">
    <field id="241" name="photo" title="Фотография" field-type-id="6" visible="visible" locked="locked">
     <type id="6" name="Изображение" data-type="img_file"></type>
    </field>
    <field id="380" name="description" title="Описание" field-type-id="19" visible="visible" indexable="indexable">
     <type id="19" name="HTML-текст" data-type="wysiwyg"></type>
    </field>
    <field id="381" name="recommended_items" title="Похожие товары" field-type-id="15" visible="visible">
     <type id="15" name="Ссылка на дерево" data-type="symlink" multiple="multiple"></type>
    </field>
   </group>
   <group id="274" name="manage_options" title="Опции управления" visible="visible">
    <field id="383" name="best_offers" title="Лучшие предложения" field-type-id="1" visible="visible">
     <type id="1" name="Кнопка-флажок" data-type="boolean"></type>
    </field>
   </group>
  </fieldgroups>
 </type>
</udata>

Замечание

Для версий до 2.8: если на странице http://ваш_сайт/utype/идентификатор отображается сообщение, что протокол UType недоступен, создайте в корневой папке сайта пустой файл с именем scheme.utype.allow и обновите страницу.
Для версий, начиная с 2.8: необходимо указать параметр utype.http.allow = "1" в файле config.ini в секции [streams] (см. Секция [streams]).

Вызов отдельной группы полей типа данных

Если вам нужен не весь тип данных, а только одна его группа полей, например, "Основные параметры", - вы легко можете получить её, добавив к запросу имя этой группы, например http://ваш_сайт/utype/78.common:

<?xml version="1.0" encoding="utf-8"?>
<udata xmlns:xlink="http://www.w3.org/TR/xlink" generation-time="0.010338">
 <group id="192" name="common" title="Основные параметры" locked="locked">
  <field id="115" name="title" title="Поле TITLE" field-type-id="13" visible="visible" inheritable="inheritable" locked="locked" indexable="indexable">
   <type id="13" name="Строка" data-type="string"/>
  </field>
  <field id="116" name="h1" title="Поле H1" field-type-id="13" visible="visible" inheritable="inheritable" locked="locked" indexable="indexable">
   <type id="13" name="Строка" data-type="string"/>
  </field>
  <field id="119" name="meta_keywords" title="Поле meta KEYWORDS" field-type-id="13" visible="visible" inheritable="inheritable" locked="locked" indexable="indexable">
   <type id="13" name="Строка" data-type="string"/>
  </field>
  <field id="118" name="meta_descriptions" title="Поле meta DESCRIPTIONS" field-type-id="13" visible="visible" inheritable="inheritable" locked="locked" indexable="indexable">
   <type id="13" name="Строка" data-type="string"/>
  </field>
  <field id="120" name="tags" title="Теги" field-type-id="16" visible="visible" locked="locked">
   <type id="16" name="Теги" data-type="tags" multiple="multiple"/>
  </field>
 </group>
</udata>

Вызов отдельного поля из группы полей типа данных

Если вам нужна не вся группа полей типа данных, а только одно её поле, например, "Поле H1", - вы легко можете получить его, добавив к запросу имя группы и имя поля, например http://ваш_сайт/utype/78.common.h1:

<?xml version="1.0" encoding="utf-8"?>
<udata xmlns:xlink="http://www.w3.org/TR/xlink" generation-time="0.007160">
 <field id="116" name="h1" title="Поле H1" field-type-id="13" visible="visible" inheritable="inheritable" locked="locked" indexable="indexable">
  <type id="13" name="Строка" data-type="string"/>
 </field>
</udata>

Добавление результатов вызова UType в шаблон

Как и в случае с запросами по протоколам UObject и UPage, добавить результат выполнения запроса по протоколу UType в XSLT-шаблон можно с помощью функции document(): document('utype://78.common.h1').

Например, следующий код вставит идентификатор поля h1 для типа данных с id = 78:

<xsl:value-of select="document('utype://78.common.h1')//@id" />

Как и в случае с запросами по протоколам UObject и UPage, используйте функцию concat() для построения динамических запросов.

Кэширование результатов вызова

Аналогично кэшированию результов вызова по протоколу UData (см. «Макросы: протокол UData»).

Объекты сайта в формате JSON

Для того чтобы получить объект сайта в формате JSON, допишите после вызова ".json"