Подобные случаи могут происходить, если макросу были заданы неверные параметры, отсутствуют указанные файлы шаблонов или была предпринята попытка обратиться к несуществующему объекту или свойству объекта. Ошибки такого рода недопустимы, так как с клиентской стороны сайта пользователи не должны ничего знать о факте неверного вызова макроса.
При использовании TPL-шаблонизатора косвенным признаком такого рода ошибок иногда может являться появление в тексте итоговой страницы названия макроса виде %имя_макроса (список_параметров)%, вместо результатов его выполнения.
При отладке, для отображения причин, по которым данный макрос не сработал, можно воспользоваться специальным макросом %catched_errors%, который выведет список таких ошибок, появившихся в ходе выполнения макросов на данной странице.
Например, если мы вставим в шаблон следующие строки:
%search insert_form('sample')%
%catched_errors%
И в папке ~/tpls/users/search/
не будет файла sample.tpl
, то вместо формы поиска по сайту мы увидим следующее:
%search insert_form('sample')%
Невозможно подключить шаблон ~/tpls/users/search/sample.tpl
Вторая строка с сообщением об ошибке — это и есть результат выполнения макроса %catched_errors%.
При использовании XSLT-шаблонизатора эти ошибки будут возвращаться вместо ответа макроса в элементе error
. Например, представим следующий вызов:
http://ваш_сайт/udata/catalog/getObjectsList/notemplate/1234
При этом раздела каталога с id=1234
не существует. Тогда мы получим ответ:
<udata module="catalog" method="getObjectsList" generation-time="0.003320">
<error>Element not found: "1234"</error>
</udata>
При желании на этот случай мы можем описать шаблон (задав соответствие match="udata[error]"
) и обработать нужным образом результат.