Leaderboard


Popular Content

Showing content with the highest reputation on 11/08/18 in Сообщения

  1. 1 point
    Итак, если у нас осталось место в навигаторе где изначально выводятся разделы структуры, у нас может возникнуть желание добавить туда что-то от себя. Для формирования этого блока служит функция шаблона реалия 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)); /*тут мы его передали в декоратор*/ В результате получаем