Вывод результата работы кастомного макроса для TPL

Материал из Umicms
Перейти к:навигация, поиск

Актуально для 2.9


Задача: Вывести результат работы кастомного макроса в TPL-шаблоне.
Решение:

Для начала, стоит заметить, что делая вывод результатов для TPL шаблона, мы автоматически сделаем вывод и для XSLT шаблонов.

Чтобы вывести результат работы макроса в TPL шаблоне, необходимо выполнить ряд условий: 1. В объявлении кастомного метода необходимо указать параметр с шаблоном по умолчанию:

public function test($template = 'default') {

2. Необходимо запустить парсер шаблона, передав ему в параметрах путь до шаблона и названия блоков, которые необходимо парсить:

list($itemsTemplate, $itemTemplate) = def_module::loadTemplates("content/" . $template, "items", "item");

Macros.png

3. Создаем шаблон в директории /templates/{название_папки}/tpls/content/default.tpl:

<?php
$FORMS = Array();

$FORMS['items'] = <<<END
%items%
END;

$FORMS['item'] = <<<END

END;
?>

Если шаблон уже сущестует, то просто добавляем в него наши блоки.

4. Создаем массив с данными

$item = array();
$item['id'] = 1;
$item['link'] = 'http://ya.ru';

5. Парсим собранные данные в нужный нам блок шаблона и записываем их в качестве элемента нового массива, так как предполагается, что данные не будут ограничиваться одной строкой:

$items[] = self::parseTemplate($itemTemplate, $item);

Macros2.png