Многоуровневое меню, где каждый уровень - отдельный список — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
 
(не показано 9 промежуточных версий 4 участников)
Строка 1: Строка 1:
<hr>
+
Для решения этой задачи придется использовать не совсем корректный способ. Не рекомендуется использовать его для меню с большой вложенностью.
<h2>Как сделать многоуровневое меню, где каждый уровень - отдельный список?</h2>
+
 
 +
'''1.''' В шаблоне дизайна пропишите макрос '''%content menu('sl3', %pid%)%''', а в папку '''''~tpls/content/menu/''''' поместите шаблон '''sl.tpl''' со следующим кодом:
 +
<pre>
 +
<?php
 +
 
 +
$FORM = Array();
 +
 
 +
$FORMS['menu_block_level1'] = <<<END
 +
%lines%
 +
END;
 +
 
 +
$FORMS['menu_line_level1'] = <<<END
 +
<li><a href="%link%">%text%</a></li>
 +
END;
 +
 
 +
$FORMS['menu_line_level1_a'] = <<<END
 +
%sub_menu%
 +
END;
 +
 
 +
$FORMS['menu_block_level2'] = <<<END
 +
<ul id="submenu">%lines%</ul>
 +
%content menu('sl2', 2, %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;
  
Для решения этой задачи придется использовать не совсем корректный способ. Не рекомендуется использовать его для меню с большой вложенностью.
+
?>
 +
</pre>
 +
 
 +
Обратите внимание на макрос '''%content menu('sl2', 2, %pid%)%''' из блока ['menu_block_level2']. В нем, с помощью макроса '''%pid%''' мы подхватываем идентификатор текущей (то есть активной) страницы и, таким образом, указываем макросу родительский элемент, от которого следует выводить страницы.  
 +
 
 +
'''2.''' Создайте шаблон '''''~tpls/content/menu/sl2.tpl''''' вида:
 +
 
 +
<pre>
 +
<?php
  
В шаблоне дизайна пропишите макрос %content menu('sl')%, где sl - шаблон из папки tpls/content/menu/ вида:
+
$FORM = Array();
  
 +
$FORMS['menu_block_level1'] = <<<END
 +
<ul id="submenu">%lines%</ul>
 +
END;
  
<?php
+
$FORMS['menu_line_level1'] = <<<END
+
<li><a href="%link%">%text%</a></li>
$FORM = Array();
+
END;
 
$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;
 
 
?>
 
  
+
$FORMS['menu_line_level1_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 должен иметь вид:
+
?>
 +
</pre>
  
<?php
+
По этому шаблону будут выводиться дочерние элементы меню.
+
[[Категория:Верстка в TPL]]
$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;
 
 
?>
 

Текущая версия на 11:45, 27 апреля 2015

Для решения этой задачи придется использовать не совсем корректный способ. Не рекомендуется использовать его для меню с большой вложенностью.

1. В шаблоне дизайна пропишите макрос %content menu('sl3', %pid%)%, а в папку ~tpls/content/menu/ поместите шаблон sl.tpl со следующим кодом:

<?php

$FORM = Array();

$FORMS['menu_block_level1'] = <<<END
%lines%
END;

$FORMS['menu_line_level1'] = <<<END
<li><a href="%link%">%text%</a></li>
END;

$FORMS['menu_line_level1_a'] = <<<END
%sub_menu%
END;

$FORMS['menu_block_level2'] = <<<END
<ul id="submenu">%lines%</ul>
%content menu('sl2', 2, %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', 2, %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;

?>

По этому шаблону будут выводиться дочерние элементы меню.