UMI-CMS: произвольное меню в tpl
В UMI-CMS есть один неприятный момент, а именно не возможно стандартными средствами вывести такие 2 меню на сайте:
1. меню) станица А, страница Б, страница В
2. меню) станица А, страница Б, страница В, страница Г, страница Д
Т.е. второе меню содержит пункты первого меню.
Первый вариант, что бы это обойти — это просто HTML код первого меню вбить в шаблон tpl, но в этом случае невозможно выделить (цветом, шрифтом и т.д.) в меню текущую страницу.
Второй вариант. В шаблоне данных создается шаблон страницы контента, куда добавляется поле типа ссылка на дерево. По данному шаблону создается страница, и в поле типа ссылка на дерево добавляем все те страницы, которые должны участвовать в меню.
В шаблоне вызываем данное меню: %data getProperty(‘242’, ‘menu’, ‘topmenu’)% , где 242 — id страницы, где добавлялись ссылки на страницы, menu — имя поля ссылки на дерево, topmenu — tpl шаблон для вывода меню, который лежит в папке /tpl/data/
В шаблоне topmenu.tpl пишем следующее:
<?php $FORMS = Array(); $FORMS['symlink_block'] = <<<END %items% END; $FORMS['symlink_item'] = <<<END <a href="%link%" style="%custom topmenu(%link%)%">%value%</a>%quant% END; $FORMS['symlink_quant'] = <<<END , END; ?> Для выделения текущего пункта меню пишется функция в custom.php: <?php public function topmenu($url){ if ($url=='/'){ if($_SERVER['REQUEST_URI']=='/'){ return "color:black;"; }else{ return "color:red;"; } }else{ if (strstr($_SERVER['REQUEST_URI'], $url)){ return "color:black;"; }else{ return "color:red;"; } } } ?> |