Многообразие данных в UMI CMS

Сталкиваясь впервые с ЮМИ разработчик может растеряться и не понять, какие именно данные можно получить от этой системы и как?

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

Обращение .xml

Первым идёт получение данных, с которыми ваш шаблон отрабатывает в первую очередь. Эти данные собираются в любом случае, даже если вы переопределяете логику страницы и тянете на неё кучу всего другого.

Добавив в URL любой страницы в конец .xml (символ точки и буквы xml) вы получаете набор структурированных данных, включающих:

  1. Модуль и метод текущей страницы. Читать как «тип данных». Так, к примеру, модуль и метод объекта каталога будет catalog/object. А у раздела — catalog/category.
  2. Мета-информацию по странице, такую как meta description и meta keywords.
  3. Информацию о текущем пользователе. Это очень удобно, например, чтобы быстро проверить права пользователя.
  4. Иерархию текущей страницы, то есть, фактически, все родительские элементы.
  5. Саму информацию по странице, то есть все свойства страницы, собранные по группам. Свойства это, например, описание или заголовок H1, который вы заполнили из административной зоны.

Обычно, этого набора данных хватает для того, чтобы базово отобразить большинство страниц, такие как страница новости или страница контента.

Но что делать, если нужные вам данные находятся, например, на другой странице? Тут к вам на помощь приходит обращение через upage.

Обращение UPAGE

Задачи, связанные с upage, обычно выглядят так: я знаю идентификатор страницы. Как мне получить данные по ней?

Выглядит обращение по upage так:

https://site.ru/upage/264

Здесь 264 — это идентификатор страницы.

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

Также у подобного внешнего вида есть дополнительная возможность — эти же данные можно получить в xslt через конструкцию document. Это будет выглядеть примерно так:

document(‘upage://264’).

Ну или, если ваш идентификатор содержится в каком-нибудь атрибуте, например id, то

document(concat(‘upage://’, @id)).

Обращение UOBJECT

Чуть усложним задачу и представим, что вы имеете не идентификатор страницы, а идентификатор объекта. В этом случае, обращение будет ровно таким же, за исключением того, что будет написано uobject вместо upage.

https://site.ru/uobject/18563

Результат также будет похож на upage, только не будет включать в себя ссылку на объект, так как объект — это не элемент иерархической структуры.

Обращение UDATA

Ещё усложним задачу и предположим, что нам нужно получить данные из какого-либо макроса. Например, из макроса lastlist модуля новостей. В этом случае вам пригодится протокол udata.

Обращение по этому протоколу будет выглядеть так:

https://site.ru/udata/news/lastlist/12

Параметры при таком обращении передаются либо через слэш, либо через get-параметры, в зависимости от настроек и реализации конкретного макроса.

Для обращения по udata также допустим формат взаимодействия через document

document(‘udata/news/lastlist/12’)

В качестве результата вы получите что-то, что возвращает конкретный макрос. Содержимое, которое возвращают стандартные макросы, есть в документации по ним на сайте umi, во вкладке XSLT-шаблонизатор.

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

Обращение USEL

Иногда бывает так, что нужно быстро выбрать некоторый объём стандартных данных, но писать для этого макрос не хочется. Для таких случаев разработан специальный механизм пользовательских выборок USEL.

Подробное описание этого механизма представлено в документации по нему на сайте UMI. Обращение по протоколу USEL аналогичны обращениям по другим протоколам, представленным ранее.

Если обращение не идёт

В некоторых случаях обращение по какому-либо из представленных протоколов через сайт может не возвращать результат и завершаться с ошибкой. В этом случае следует проверить, не закрыта ли данная возможность через config.ini.

Заключение

Тут представлены далеко не все способы работы с данными в UMI CMS, но даже просто вооружившись этими знаниями вы станете куда более профессиональным разработчиком. Дерзайте!

Ваш отзыв