Смарти версии 3.
В шаблоне вывожу:
{foreach $mySql->select("`id`, `name`", "`mains`") as $main}
{get_parents select=array("`id`, `name`, `display`, `sef`", "mains_values", $main['id'])}
html код для компиляции {$value['name']}<br />
{/get_parents}
{/foreach}
Выводит типы меню, и пытается их обработать (вывести дочерние пункты).
Дальше.
На php ловлю следующим образом:
$smarty->registerPlugin("block","get_parents", "get_parents");
теперь сама функция:
function get_parents($params, $content, $smarty, &$repeat, $template = ''){
global $mySql;
$select = $params['select'];
if($parents = $mySql->select($select[0], $select[1]." WHERE `parent` = ".intval($select[2])){
foreach($parents as $value){
$smarty->assign('value', $value);
$ret .= $content;
}
}
return $ret;
}
И теперь вопрос:
допустим у первого пункта два подпункта. Тест 1 и Тест 2.
В данном виде код выводит
html код для компиляции Тест 2
html код для компиляции Тест 2
Если бы выводил
html код для компиляции Тест 1
html код для компиляции Тест 1
то можно было бы в assign добавить true для nocache, но выводит последнее значение везде, а не первое.
В какую сторону копать?
И кстати если заменить $ret .= $content; на return $content; то выводит
html код для компиляции Тест 1