Логотип

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

Объекты: протокол UObject

Протокол UObject предназначен для получения любого объекта системы UMI.CMS по его идентификатору. Протокол UObject дополняет протокол UPage, позволяя вывести информацию об объекте, который не является страницей, например о зарегистрированном пользователе.

Просмотр объектов сайта в виде XML

Чтобы увидеть результат запроса по этому протоколу, наберем в адресной строке браузера http://ваш_сайт/uobject/ и затем идентификатор объекта, например http://ваш_сайт/uobject/14, где 14 — идентификатор пользователя. Вы увидите страницу, подобную представленной:

<?xml version="1.0" encoding="utf-8" ?>
 <udata>
    <object
        id="14"
        guid="system-supervisor"
        name="sv"
        type-id="4"
        type-guid="users-user">
        <properties>
            <group id="16" name="idetntify_data">
                <title>Идентификационные данные</title>
                    <property id="45" name="login" type="string">
                        <title>Логин</title>
                        <value>sv</value>
                    </property>
                    <property id="53" name="groups" type="relation">
                        <title>Группы пользователей</title>
                        <value>
                            <item
                                id="15"
                                name="Супервайзеры"
                                type-id="6"
                                xlink:href="uobject://15" />
                        </value>
                    </property>
            ... другие свойства...
            </group>
        ... другие группы...
        </properties>
    </object>
</udata>

Как видно из приведенного примера, формат данных UObject отличается от формата данных UPage только тем, что вместо элемента page выводится элемент object, у которого отсутствуют атрибуты parentId, link, is-visible и object-id и вместо них присутствует атрибут name — имя объекта.

Замечание

Для версий до 2.8: если на странице http://ваш_сайт/uobject/someId отображается сообщение, что протокол UObject недоступен, создайте в корневой папке сайта пустой файл с именем scheme.uobject.allow и обновите страницу.

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

Внимание

Из соображений безопасности после окончания этапа разработки файл scheme.uobject.allow настоятельно рекомендуется удалить. В противном случае некоторые данные, получаемые по этому протоколу через http, могут быть доступны любому посетителю сайта.

Вызов отдельного свойства объекта

Аналогично протоколу UPage, если требуется получить только одно свойство объекта, например login, добавьте к запросу имя этого свойства, например http://ваш_сайт/uobject/14.login:

<?xml version="1.0" encoding="utf-8" ?>
<udata>
    <property id="45" name="login" type="string">
        <title>Логин</title>
        <value>sv</value>
    </property>
</udata>

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

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

Например, следующий код вставит значение поля login для объекта с id = 14:



<xsl:value-of select="document('uobject://14.login')//value" />

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

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

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

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

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