USEL и шаблоны новой технологии в UMI CMS

В некоторых случаях программисты могут столкнуться с ситуацией, когда им приходится иметь дело с UMI CMS, установленной и настроенной до появления шаблонов по новой технологии. (Подробнее об этой технологии можно прочитать в статье "Плюсы и минусы нового формата хранения шаблонов UMI CMS".) В этой статье я расскажу об одной из проблем, реально возникшей у меня в проекте и отнявшей у меня достаточно много времени: в UMI CMS не работал USEL.

Предыстория

Изначально, сайт был выгружен из UMI.RU (чуть подробнее об этом сервисе я расскажу в другой статье). Однако заказчика сайт не устроил и решено было полностью поменять его дизайн. Для этого мы воспользовались стандартной технологией настройки ЮМИ (об этом тоже чуть позже), принятой в нашей компании.

Собственно проблема

После установки и настройки шаблона возникла потребность использовать в одной из выборок собственный USEL. Он был успешно написан, вложен в конкретное место (/templates/site/usels/list.xml) и вызван. Однако эффекта это не принесло. Результат вызова USEL из строки браузера постоянно выдавал лишь сообщение об ошибке без указания деталей.

<?xml version="1.0" encoding="utf-8"?>
<udata xmlns:xlink="http://www.w3.org/TR/xlink" generation-time="0.001088">
<error code="not-found">Не найдено</error>
</udata>
<!-- This page generated in 0.014505 secs by XSLT, HTTP SCHEME MODE -->

Мытарства

Сначала я проверил, что написал все корректно и положил код куда нужно. Затем я посмотрел как работает на других сайтах — там все было ок. После этого пришлось залезть в системные файлы UMI и найти то место, где вызывается эта ошибка. После некоторых отладочных действий я обнаружил, что UMI, при обращении к файлу USEL-запроса, формирует его местоположение не по наличию собственно файла, а по наличию каталога, в котором мог быть этот файл. Причем первым изучается каталог, который находится в корне сайта. И если он существует — то запрос выбирается именно из него, даже если файла там нет.
Подумав, что я ошибся при своем анализе, я все-таки обратился в службу заботы UMI и получил от них подтверждение своей теории.

Решение

Необходимо переименовать или удалить каталог USEL в корне сайта. В этом случае система, не обнаружив его, попытается получить путь к файлу, основываясь на локальном пути к шаблону по новой технологии. И все пройдет как нужно.

Надеюсь, что это решение поможет многим в моменты, когда штатный функционал USEL не работает так, как описано документации UMI.

Простой и понятный online-курс для обучения XSLT-программиста с любого базового уровня

Май04

Один отзыв на «USEL и шаблоны новой технологии в UMI CMS»

  1. п***ц какой то. проще заново макрос переписать чем провести такой аудит. автору респект что разобрался и дал полезную аудитории

Ваш отзыв