Шаблоны в UMI.CMS есть двух видов (рассматриваем только tpl): шаблоны страниц и шаблоны модулей.
Первые - это все, что лежит в корне папки /tpls/content/ Они отвечают за вывод блоков информации на странице и с ними все понятно с первого взгляда.
А вот за сами блоки отвечают шаблоны модулей и там есть несколько интересных моментов. Выглядят они так:
$FORMS = array();
$FORMS = <<ENd
некий код
END;
?>
Строка, ограниченная маркером END - это т.н. here-документ, появившийся в php4 способ записи многострочных констант.
Ограничитель END может быть любым алфавитно-цифровым идентификатором, не встречающимся в тексте here-документа в виде отдельной строки. Синтаксис накладывает два ограничения на here-документы:
- после <<
- завершающая строка END; должна оканчиваться точкой с запятой, после которой до конца строки не должно быть никаких инструкций, а начинаться она должна с первого символа строки.
А теперь обещанное включение php.
Если в тексте here-документа встречается некая переменная, то она будет интерполирована
$lang = cmsController::getInstance()->getCurrentLang()->getPrefix();
$FORMS = array();
$FORMS = <<
Текущий язык {$lang}
Выведет: Текщий язык ru
END;
Эту особенность можно использовать для включения в шаблон результатов простейших операций.
Например, определять с какой страницы пришел пользователь и выводить "Вы ввели неправильное имя или пароль..." только в случае соответствующего http_refferer
В общем и целом - это средство следует применять весьма ограниченно, т.к. это затрудняет читабельность кода, и засоряет глобальную область. Рекомендуется всегда использовать кастомные макросы