Многоуровневое меню, где каждый уровень - отдельный список — различия между версиями
Материал из Umicms
Sv (обсуждение | вклад) |
Sv (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
<hr> | <hr> | ||
<h2>Как сделать многоуровневое меню, где каждый уровень - отдельный список?</h2> | <h2>Как сделать многоуровневое меню, где каждый уровень - отдельный список?</h2> | ||
+ | |||
+ | |||
Для решения этой задачи придется использовать не совсем корректный способ. Не рекомендуется использовать его для меню с большой вложенностью. | Для решения этой задачи придется использовать не совсем корректный способ. Не рекомендуется использовать его для меню с большой вложенностью. | ||
− | В шаблоне дизайна пропишите макрос %content menu('sl')%, где sl - шаблон из папки tpls/content/menu/ вида: | + | В шаблоне дизайна пропишите макрос % content menu('sl')%, где sl - шаблон из папки tpls/content/menu/ вида: |
+ | |||
+ | <source lang="php"> | ||
+ | <?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; | ||
+ | |||
+ | ?> | ||
+ | </source> | ||
+ | |||
+ | Обратите внимание на макрос % content menu('sl2',% pid%)% из блока ['menu_block_level2']. В нем, с помощью макроса % pid% мы подхватываем идентификатор текущей (то есть активной) страницы и, таким образом, указываем макросу родительский элемент, от которого следует выводить страницы. Шаблон tpls/content/menu/sl2.tpl должен иметь вид: | ||
+ | |||
+ | |||
+ | <source lang="php"> | ||
+ | <?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; | ||
− | + | ?> | |
− | + | </source> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
Версия 11:51, 1 сентября 2009
Как сделать многоуровневое меню, где каждый уровень - отдельный список?
Для решения этой задачи придется использовать не совсем корректный способ. Не рекомендуется использовать его для меню с большой вложенностью.
В шаблоне дизайна пропишите макрос % content menu('sl')%, где sl - шаблон из папки tpls/content/menu/ вида:
<?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% мы подхватываем идентификатор текущей (то есть активной) страницы и, таким образом, указываем макросу родительский элемент, от которого следует выводить страницы. Шаблон 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;
?>