.
МЕСТО ПОД РЕКЛАМУ
14 Ноябрь 2013

Битрикс — иерархическое многоуровневое меню «гармошка»

posted in Bitrix, Программирование |

Итак, очередное ТЗ для Битрикс CMS — иерархическое многоуровневое меню «гармошка».
Реализацию сей задачи я конечно-же задумал с использованием какого-нить плагинчика с использованием jQuery (а куда без него в наше время ?), немного поиска и небольшой,
вполне устраивающий меня плагин найден — liHarmonica

Демка пашет, всё вроде бы просто, НО — как мне вытащить из Битрикса секции и иерархическом порядке?

Готового подходящего решения в API я не нашел, подходит только CIBlockSection::GetList() и рекурсивная функция по получению подсекций в конкретной секции.
Пихать непосредственно CIBlockSection::GetList() в рекурсивную фукнцию — убийство т.к. для каждой секции будет своё обращение в БД — слишком большая нагрузка для получения меню.

Как решение — сначала «дёрнуть» все секции в массив, и в дальнейшем работать уже с ним.
Ну для правильного кэширования всего задуманного, нужно будет запихать всё в компонент.

Сказано — сделано 🙂
Код в студию

component.php

template.php

P.S.
Блин, всего несколько строчек кода — а убил полдня на менюшку эту.
Кому интересно — качнуть готовый компонент можно тут, посмотреть реализацию тут.
(пути до js и css подкорректировать только нужно — у меня это в нескольких шаблонах используется, поэтому выносил в корень).

У нас один комментарий на запись “Битрикс — иерархическое многоуровневое меню «гармошка»”

Почему бы Вам не высказать своем мнение! Позвольте нам узнать, что Вы думаете...

  1. 1 On 02.02.2014, Alex said:

    Здравствуйте. Спасибо за меню, с битриксом только начинаю работать, очень непривычно после других CMS, ранее работал с DLE и WordPress.

    Возникла одна проблема — код скопировал в точности, но после перехода во вложенную рубрику в меню и перехода открытые пункты меню сворачиваются, а в вашей демо сотаются открытыми.

    По вашему примеру наапример открываем Воздушные фильты и выпадает Swegon, переходим в Swegon, и в меню слева пункт Swegon остается открытым, а у меня закрывается :(.

Оставить комментарий

Яндекс.Метрика