Шаблонизатор в UMI.CMS
Шаблонизатор позволяет отделить представление данных от исполняемого кода. В UMI.CMS используется 3 его варианта: TPL, PHP или XSLT.
Использование TPL дает следующие преимущества:
- Легче разобраться в уже готовых шаблонах.
- Для работы с ним достаточно владения HTML.
Но есть и сложность в TPL:
- Для реализации сложных «дизайнерских креативов» необходимо использование кастомов, то есть нестандартного функционала, который пишет программист.
Категории TPL-шаблонов в UMI CMS
TPL делят на 2 категории:
Шаблон страницы
Представляет собой файл с HTML-разметкой и макросами. Эти файлы используются для формирования структуры страниц сайта, в результате они отображаются по этим шаблонам. Например, создаём и назначаем шаблон страниц блога, которые имеют одинаковый вид и функционал. Сами TPL файлы шаблонов размещаются в папке по адресу ~/tpls/content/
Тогда получается, что шаблон страницы блога состоит из HTML-разметки, в которую включены макросы вызова разных функциональных возможностей. Например, на странице есть место для поля поиска по сайту. Для этого в код шаблона в месте, где предусмотрена форма поиска, вписывается макрос %search insert_form()%.
Шаблон модуля
Это файлы с определенным форматом. Они поделены на разные блоки, одни из которых описывают сценарии работы макроса, а другие используются для вывода в нужном формате результатов его выполнения. Находятся в разделе ~/tpls/имя_модуля/. Там же иногда размещаются дополнительные файлы макросов, которые представляют собой методы модуля (иногда их выносят в специальные отдельные папки). Например, для названной выше формы в дополнительных файлах хранится алгоритм работы поиска и в них можно изменить код работы.
Проблемы TPL-шаблонизатора
- Отсутствие файла default.tpl в некоторых компонентах, чаще всего предлагаемых сторонними разработчиками. Из-за этого при вызове того или иного компонента на сайте будет возникать ошибка. Чинится созданием дефолтного файла и прописыванием в нем нужного кода. Головную боль здесь представляет то, что в большинстве случаев приходится искать в интернете документацию по конкретному компоненту, которая не всегда есть. Тогда остается или ждать (а это недели), или обратиться с вопросом к разработчикам. Но последние тоже не всегда оперативно реагируют на запросы, а то и вовсе их игнорируют. Третий вариант – дождаться мануала от какого-нибудь умельца, который столкнется с аналогичной проблемой, но справится с ней раньше.
- При вызове макросов можно получить не всю информацию от функции. Например, когда вместо наименования элементов справочника выводится их ID – пользователь пытается перейти на карточку товара, где предусмотрен выпадающий список свойств, а вместо текстового перечня видит числовое значение. Приходится писать специальный кастом, чтобы это исправить.
- Нужно создавать очень много шаблонов: для главной страницы, внутренней, новостей, ajax-запросов (добавление товаров в корзину, калькулятор, фильтр, отправка формы) и пр. Кстати говоря, в случае с ajax-запросами приходится даже создавать в структуре отдельную страницу. Если на разных страницах блоки расположены по-разному, также придется создавать шаблон для каждой. То же самое, если есть собственное меню у страниц разделов или подразделов. Тут либо писать кастомы, либо делать разные шаблоны. Пример. Сайт с большим количеством поддоменов. У каждого должна быть своя информация в шапке, футере, а у некоторых еще и разная структура главной страницы. Чтобы не создавать отдельный tpl-шаблон для каждого поддомена пришлось писать кастом, который брал из файла данные для шапки и футера и формировал нужную структуру главной каждого поддомена.
- Устаревшая технология (сейчас в основном используется XSLT и PHP) и приходится писать много лишнего кода. Для интернет-магазинов или каких-то крупных порталов TPL-шаблоны точно не подойдут. Какое-то время назад мы занимались интернет-магазином на TPL (пока не сменили шаблон на PHP). Во время доработки корзины возникла ситуация, когда, тестируя возможность заказа в 1 клик, программист хотел поменять блоки со способами оплаты или доставки, но из-за конфликта скриптов возникала ошибка. Пришлось писать свои кастомы, чтобы решить эту проблему. С сайтами на PHP такого не бывает. Там более широкий спектр возможностей.
- Долгая обработка данных, потому что берутся ненужные. В PHP все происходит в разы быстрее, т.к. возникает меньше запросов к БД.
Так все-таки стоит ли использовать TPL-шаблонизатор?
Ответ на этот вопрос можете дать только вы сами. Но если у вас простой сайт, состоящий из нескольких страниц, без каких-либо наворотов, то с версткой шаблона на TPL вряд ли возникнут проблемы. А вот владельцам интернет-магазинов или крупных порталов мы советуем обратить внимание на PHP. Так веб-программисту и работать с функционалом будет проще, и скорость обработки запросов будет выше, а значит, увеличится скорость работы всего сайта.