Формирование разных меню с единым источником данных
Администрование При формировании навигации сайта может возникнуть желание сформировать несколько разных меню, используя одну «Карту сайта». «Карту сайта» (или просто одного из разделов) при этом разумно оформить в виде ненумерованного списка на корневой странице Группы. Этом случае хлебные крошки сформируются автоматически. Как сделать так, чтобы из одной «Карты сайта» можно было сделать несколько вариантов меню, например одновременно и боковое, и выпадающее из верхней навигации?
Итак, составим такую «Карту сайта», к примеру для группы Group:
* [[Base|+]] [[#map]] ** [[Go|+]] * [[Content|+]] * [[Admin|+]] * [[Developer|+]] [[#mapend]] (:ifend:)
Сектор нужен для того, чтобы делать (:include:)
этой карты в других частях макета.
Чтобы успешно протранслировать созданную структуру в выпадающее меню навигации, нам нужно сделать буллеты второго уровня вложенности (**
), поскольку в том меню они сверстаны именно так. Следите:
*{$$level} {$$class} [[Base|+]] [[#map]] **{$$level} [[Go|+]] *{$$level} [[Content|+]] *{$$level} [[Admin|+]] *{$$level} [[Developer|+]] [[#mapend]]
Мы добавили переменную {$$level}, которая позволит сделать необходимое вот так:
Include в верхнем меню: добавляем к нему еще один уровень вложенности и новый класс: (:include Group/Group#map level="*" class="%apply=list myClass%":)
Почти всё хорошо, только вот на странице Group карта теперь выглядит вот так:
- {$$level} {$$class} Ссылка
- …
Не проблема — сделаем ее скрытой, и вызовем также через include:
(:if false:) Это общее меню для левой, верхней и корневой навигации. *{$$level} {$$class} [[Base|+]] [[#map]] **{$$level} [[Go|+]] *{$$level} [[Content|+]] *{$$level} [[Admin|+]] *{$$level} [[Developer|+]] [[#mapend]] (:ifend:) (:include Group/Group#map:)
Задача решена, спасибо за внимание.