Битрикс – иерархическое многоуровневое меню “гармошка”


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

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

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

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

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

component.php

template.php

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

,

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

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

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

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

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

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