Итак, если у нас осталось место в навигаторе где изначально выводятся разделы структуры, у нас может возникнуть желание добавить туда что-то от себя.
Для формирования этого блока служит функция шаблона реалия getTemplateMenu, которая пользуется услугами декоратора меню. Логи этого декоратора довольно сложна, именно поэтому мы не стали выдавать его в виде шаблона, а свели до $navmenu.
Суть задачи - позволить нехитрым набором опций сообщать декоратору меню, что у куда вставить нам в нашу менюху. Я предусмотрел вставку двух типов:
1) вставка простой ссылки
2) вставка блока с выпадающими подпунктами, которые формируются на базе одного из меню из раздела Контент - Меню.
А) Для начала улучшим функцию getTemplateMenu.
Находим ее в /template/frontend/realia/main/main.php и заменяем на http://pastebin.com/NpibVwer
Главное отличие, что она теперь умеет понимать переданные нами параметры и пытается кешировать в сессию некоторые данные. Т.е. если вы укажете ей строить дополнительный пункт на базе какой-то менюшки, то она не будет на всех переходах требовать его от бд, а возьмет один раз и запомнит на всю вашу сессию.
Б) Параметры функции.
Что бы указать чем и где дополнить нам меню нужно указать функции параметры. Параметры указываются в виде массива
$menues=array( array( 'id'=>25, /*ID меню из Контент - Меню. Если указать ID не существующего в данный момент Меню, то получится просто пункт с меню, без выпадающего блока, тогда данный пункт даже не буде. Если нужно навставлять ссылок, то просто ставьте там 10000 и дальше*/
'title'=>'О нас', /*Выводимая надпись на пункте*/
'position'=>'behind',/*Расположение относительно пунктов Структуры. Если не указано или не behind, то after - в конце*/
'href'=>'/somelink/'/*Ccылка на корневом пункте. Если не указать, то будет якорь (#), те неактивная ссылка чисто для группировки*/ ),
array('id'=>23,'title'=>'О вас','position'=>'after','href'=>'http://dadada.ru'));
Например, нам нужно поставить в верхнее меню следующее:
- в самом начале ссылку на главную
- после нее ссылку на отзывы /review
- в конце подключить выпадающий список из Меню - Полезная информация с ид в БД 215.
Сотв. наша конфигурация буде иметь вид
$menues=array(array('id'=>0, /*0-хитрое значение. Оно может быть только в одном пунке и на него автоматом ставится ссылка на корень сайта*/
'title'=>'Главная','position'=>'behind'),array('id'=>1000, /*поставили 1000 так как такого пункта у нас в меню нет*/
'title'=>'Отзывы','position'=>'behind','href'=>'review'),array('id'=>215, /*а такое меню есть и мы его запросили*/
'title'=>'Полезно','position'=>'after'));
В) Как это все включить.
В файле /template/frontend/realia/main/main.php находим вызов
$this->template->assert('navmenu', $this->getTemplateMenu());
И меняем его на
$menues=array(array('id'=>0,'title'=>'Главная','position'=>'behind'),
array('id'=>1000,'title'=>'Отзывы','position'=>'behind','href'=>'review'),
array('id'=>215,'title'=>'Полезно','position'=>'after')); /*наш набор пунктов*/
$this->template->assert('navmenu', $this->getTemplateMenu($menues)); /*тут мы его передали в декоратор*/
В результате получаем