Многоуровневое меню, где каждый уровень - отдельный список — различия между версиями
Материал из Umicms
Sv (обсуждение | вклад) |
Cmac (обсуждение | вклад) |
||
| Строка 60: | Строка 60: | ||
По этому шаблону будут выводиться дочерние элементы меню. | По этому шаблону будут выводиться дочерние элементы меню. | ||
| + | [[Категория:Меню]] | ||
Версия 13:54, 8 сентября 2011
Для решения этой задачи придется использовать не совсем корректный способ. Не рекомендуется использовать его для меню с большой вложенностью.
1. В шаблоне дизайна пропишите макрос %content menu('sl')%, а в папку ~tpls/content/menu/ поместите шаблон sl.tpl со следующим кодом:
<?php
$FORM = Array();
$FORMS['menu_block_level1'] = <<<END
%lines%
END;
$FORMS['menu_line_level1'] = <<<END
END;
$FORMS['menu_line_level1_a'] = <<<END
%sub_menu%
END;
$FORMS['menu_block_level2'] = <<<END
<ul id="submenu">%lines%</ul>
%content menu('sl2',%pid%)%
END;
$FORMS['menu_line_level2'] = <<<END
<li><a href="%link%">%text%</a></li>
END;
$FORMS['menu_line_level2_a'] = <<<END
<li class="active"><a href="%link%">%text%</a></li>
END;
?>
Обратите внимание на макрос %content menu('sl2', %pid%)% из блока ['menu_block_level2']. В нем, с помощью макроса %pid% мы подхватываем идентификатор текущей (то есть активной) страницы и, таким образом, указываем макросу родительский элемент, от которого следует выводить страницы.
2. Создайте шаблон ~tpls/content/menu/sl2.tpl вида:
<?php $FORM = Array(); $FORMS['menu_block_level1'] = <<<END <ul id="submenu">%lines%</ul> END; $FORMS['menu_line_level1'] = <<<END <li><a href="%link%">%text%</a></li> END; $FORMS['menu_line_level1_a'] = <<<END <li class="active"><a href="%link%">%text%</a></li> END; ?>
По этому шаблону будут выводиться дочерние элементы меню.