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


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

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

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

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

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

component.php

template.php

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

,

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

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *