Вывод результата работы кастомного макроса для TPL — различия между версиями
Velross (обсуждение | вклад) |
Velross (обсуждение | вклад) |
||
Строка 9: | Строка 9: | ||
Чтобы вывести результат работы макроса в TPL шаблоне, необходимо выполнить ряд условий: | Чтобы вывести результат работы макроса в TPL шаблоне, необходимо выполнить ряд условий: | ||
− | + | 1. В объявлении кастомного метода необходимо указать параметр с шаблоном по умолчанию: | |
<source lang="php"> | <source lang="php"> | ||
public function test($template = 'default') { | public function test($template = 'default') { | ||
</source> | </source> | ||
− | + | 2. Необходимо запустить парсер шаблона, передав ему в параметрах путь до шаблона и названия блоков, которые необходимо парсить: | |
<source lang="php"> | <source lang="php"> | ||
list($itemsTemplate, $itemTemplate) = def_module::loadTemplates("content/" . $template, "items", "item"); | list($itemsTemplate, $itemTemplate) = def_module::loadTemplates("content/" . $template, "items", "item"); | ||
Строка 20: | Строка 20: | ||
[[Файл:Macros.png]]<br/> | [[Файл:Macros.png]]<br/> | ||
− | + | 3. Создаем шаблон в директории /templates/{название_папки}/tpls/content/default.tpl: | |
<source lang="php"> | <source lang="php"> | ||
<?php | <?php | ||
Строка 36: | Строка 36: | ||
Если шаблон уже сущестует, то просто добавляем в него наши блоки. | Если шаблон уже сущестует, то просто добавляем в него наши блоки. | ||
− | + | 4. Создаем массив с данными | |
<source lang="php"> | <source lang="php"> | ||
$item = array(); | $item = array(); | ||
Строка 42: | Строка 42: | ||
$item['link'] = 'http://ya.ru'; | $item['link'] = 'http://ya.ru'; | ||
</source> | </source> | ||
+ | |||
+ | 5. Парсим собранные данные в нужный нам блок шаблона и записываем их в качестве элемента нового массива, так как предполагается, что данные не будут ограничиваться одной строкой: | ||
+ | <source lang="php"> | ||
+ | $items[] = self::parseTemplate($itemTemplate, $item); | ||
+ | </source> | ||
+ | [[Файл:Macros2.png]] | ||
+ | <br/> |
Версия 17:48, 29 июня 2013
Актуально для 2.9
Задача: Вывести результат работы кастомного макроса в TPL-шаблоне.
Решение:
Для начала, стоит заметить, что делая вывод результатов для TPL шаблона, мы автоматически сделаем вывод и для XSLT шаблонов.
Чтобы вывести результат работы макроса в TPL шаблоне, необходимо выполнить ряд условий: 1. В объявлении кастомного метода необходимо указать параметр с шаблоном по умолчанию:
public function test($template = 'default') {
2. Необходимо запустить парсер шаблона, передав ему в параметрах путь до шаблона и названия блоков, которые необходимо парсить:
list($itemsTemplate, $itemTemplate) = def_module::loadTemplates("content/" . $template, "items", "item");
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);