Протокол UPage предназначен для получения любой страницы сайта в XML-формате.
Чтобы увидеть результат запроса по этому протоколу, наберем в адресной строке браузера http://ваш_сайт/upage/ и затем url или id страницы сайта, например http://ваш_сайт/upage/mypage или http://ваш_сайт/upage/23052. Вы увидите страницу, подобную представленной:
<?xml version="1.0" encoding="utf-8" ?>
<udata>
<page
id="23052"
parentId="0"
link="/mypage/"
is-visible="1"
is-active="1"
object-id="27089"
type-id="10"
type-guid="content-page"
update-time="1302511149"
alt-name="mypage">
<name>Моя страница</name>
<properties>
<group id="22" name="common">
<title>Основные</title>
<property id="22" name="title" type="string">
<title>Поле TITLE</title>
<value>Заголовок моей страницы (TITLE)</value>
</property>
<property id="23" name="h1" type="string">
<title>Поле H1</title>
<value>Заголовок моей страницы</value>
</property>
... другие свойства...
</group>
... другие группы свойств...
</properties>
</page>
</udata>
Замечание
Для версий до 2.8: если на странице http://ваш_сайт/upage/mypage отображается сообщение, что протокол UPage недоступен, создайте в корневой папке сайта пустой файл с именем scheme.upage.allow
и обновите страницу.
Для версий, начиная с 2.8: необходимо указать параметр upage.http.allow = "1" в файле config.ini
в секции [streams] (см. Секция [streams]).
Внимание
Из соображений безопасности после окончания этапа разработки файл scheme.upage.allow
настоятельно рекомендуется удалить. В противном случае некоторые данные, получаемые по этому протоколу через http, могут быть доступны любому посетителю сайта.
Если вам нужна не вся страница, а только одно ее свойство, например h1, вы легко можете получить его, добавив к запросу имя этого свойства, например http://ваш_сайт/upage/mypage.h1:
<?xml version="1.0" encoding="utf-8" ?>
<udata>
<property id="23" name="h1" type="string">
<title>Поле H1</title>
<value>Заголовок моей страницы</value>
</property>
</udata>
Как и в случае с запросами по протоколу UData, добавить результат выполнения запроса по протоколу UPage в XSLT-шаблон можно с помощью функции document(): document('upage://mypage.h1').
Например следующий код вставит значение поля контент для страницы с id = 7:
<xsl:value-of select="document('upage://7.content')//value" disable-output-escaping="yes" />
Аналогично вызовам макросов с параметрами, можно при помощи функции concat()
динамически передавать параметр в запрос Upage:
<xsl:value-of select="document(concat('upage://', @id, '.anons'))//value" disable-output-escaping="yes" />
Аналогично кэшированию результов вызова по протоколу UData (см. «Макросы: протокол UData»).