DLMenu: Сниппет для вывода меню с помощью DocLister
- Дополнения
- DLMenu
72128
DLMenu: Сниппет для вывода меню с помощью DocLister
С Wayfinder все понятно и так; DLBuildMenu хорош как иллюстрация возможностей параметра prepare, но такой способ решения задачи привел к повышенному потреблению ресурсов, что уже не очень хорошо. К недостаткам DLBuildMenu можно отнести и некоторую сложность при переходе с Wayfinder. В общем, предлагаю свое решение, которое должно преуменьшить недостатки DLBuildMenu, сохранив гибкость в манипуляциях с шаблонами.
Сниппет я написал, конечно, на базе DocLister, расширив контроллер site_content.
Особенности:
- система шаблонов и классов, схожая с Wayfinder;
- количество запросов равно количеству уровней в меню (без учета запросов на добавление tv-параметров и подсчет дочерних документов)
- собственно, возможность подсчитать количество дочерних ресурсов (для непосредственных родителей);
- почти все параметры можно задавать как для всех уровней меню, так и для конкретного уровня;
- можно использовать prepare для обработки данных и подмены шаблонов; как и в DocLister можно с помощью prepare исключать документы из вывода;
- можно строить меню от нескольких родителей;
- можно держать развернутыми определенные ветки;
- можно вывести меню в виде json-массива;
- кэширование исходных данные для ускорения работы (пойдет в паблик, когда прикрутим к Evo нормальный кэш).