UMI.CMS: Макросы в PHP-шаблонизаторе (Урок 5)

Что такое макрос?

Макрос — программный алгоритм, записанный пользователем для выполнения рутинных операций. В контексте шаблонизаторов, макрос — символьное имя, заменяемое при обработке на последовательность символов (фрагмент HTML-кода, элемент страницы или слово из словаря синонимов). В UMI.CMS макросы позволяют встраивать информацию на сайт, например, URL текущей страницы. Более подробная информация содержится в официальной документации UMI.CMS.

Преимущества PHP-шаблонизатора UMI.CMS

PHP-шаблонизатор UMI.CMS обладает следующими преимуществами:

  • Высокая скорость: сайты загружаются быстрее, чем с другими шаблонизаторами.
  • Доступность специалистов: найти разработчиков проще, чем для других технологий.
  • Быстрая разработка: разработка сайтов занимает меньше времени (по сравнению, например, с XSLT).
  • Гибкая кастомизация: обеспечивает большую гибкость настройки шаблонов.

Необходимо учитывать безопасность, поскольку данные могут поступать от пользователей, включая потенциально опасный код (HTML-теги, SQL-запросы и т.д.).

Начало работы с PHP-шаблонизатором UMI.CMS

Базовый шаблон содержит два блока кода, подключающие массив $variables и объект $this. Массив $variables используется для вывода данных (например, заголовка страницы <title>). Объект $this предоставляет доступ к методам шаблонизатора, таким как render(), используемая для рендеринга шаблонов и вывода значений. Иерархическая структура шаблонов организуется с помощью специальных конструкций. Файлы шаблонов хранятся в директории templates/ (вложенные папки допустимы). Главный шаблон часто называется default.php.

Пример структуры файлов шаблонов:

templates/
└── default.php

Шаблон содержит стандартные HTML-теги, вызовы макросов и функции PHP-шаблонизатора. Удаление кода, подключающего массив $variables и объект $this, сделает шаблон неработоспособным.

Схема работы:

  1. Пользовательский запрос.
  2. Генерация страницы.
  3. Шаблонизация с помощью PHP.
  4. Вывод в браузер.

В отличие от XSLT, PHP-шаблонизатор не требует преобразования данных в XML, что ускоряет генерацию страницы.

Встроенные хелперы (макросы)

UMI.CMS предоставляет следующие встроенные хелперы (макросы):

  • macro(): вызов макроса.
  • get_page(): возвращает страницу по URL.
  • get_page_by_id(): возвращает страницу по ID.
  • translate(): возвращает перевод языковой метки.
  • get_object(): возвращает объект по ID.
  • user(): выполняет команду, связанную с пользователем.
  • get_request(): возвращает необработанный параметр запроса.
  • set_var(): устанавливает общую переменную.
  • get_var(): возвращает запрошенную общую переменную.
  • isset_var(): проверяет существование общей переменной.
  • parse_macros(): выполняет макросы.

Пример использования set_var() и get_var():

<?php set_var('user', array('login' => 'admin')); ?>
<?php echo get_var('user')['login']; // Выведет 'admin' ?>

Функция print_r() позволяет вывести содержимое массива (например, полученного из get_var()).

Расширение PHP-шаблонизатора

Для создания расширений, внесите изменения в config.ini, добавив секцию umi.template.extends с путем к файлу расширения. Имя файла должно совпадать с именем класса, реализующего интерфейс iUmiTemplateExtension.

Переход с XSLT-шаблонизатора

Переход с XSLT осуществляется заменой вызовов XSLT-функций на соответствующие функции PHP-шаблонизатора.

Работа с макросами в PHP-шаблонизаторе UMI.CMS основана на встроенных хелперах и возможности создания собственных расширений. Это обеспечивает гибкость и высокую производительность. Понимание принципов работы с макросами важно для освоения UMI.CMS.

Что будем искать? Например,программа