Оптимизация загрузки меню

#
Оптимизация загрузки меню
Добрый день.
Подскажите, как ограничить вывод в xml структуры только 2х уровней?
А то в выпадающем меню вывожу только 1 и 2й уровни меню, группы магазина, а в xml подгружаются разделе глубже, тем самым сильно грузит сервер.


<?php
            $Structure_Controller_Show = new Structure_Controller_Show(Core_Entity::factory('Site', CURRENT_SITE));
            $Structure_Controller_Show
               ->xsl(Core_Entity::factory('Xsl')
               ->getByName('Меню'))
               ->menu(1)
               ->showShopGroups(TRUE)
               ->showInformationsystemGroups(TRUE)
               ->forbiddenTags(array('template_id', 'data_template_id', 'document_id', 'lib_id', 'seo_title', 'seo_description', 'seo_keywords', 'type', 'siteuser_group_id', 'https', 'active', 'indexing', 'changefreq', 'priority', 'user_id', 'shop_tax_id', 'shop_seller_id', 'shop_currency_id', 'shop_id', 'shop_measure_id', 'type', 'vendorcode', 'weight', 'siteuser_group_id', 'seo_title', 'seo_description', 'seo_keywords', 'indexing', 'yandex_market', 'yandex_market_bid', 'yandex_market_cid', 'manufacturer_warranty', 'country_of_origin', 'yandex_market_sales_notes', 'user_id', 'siteuser_id', 'guid', 'showed', 'length', 'width', 'height', 'deleted', 'text', 'description'))
               ->show();
         ?>
Делаю сайты на HostCMS! Подробнее по почте anton.yurzanov@gmail.com
#
Re: Оптимизация загрузки меню
Стандартно такой возможности нет. Вы можете воспользоваться хуком @hostcms-event Structure_Controller_Show.onBeforeFindShopGroups и задать через него ограничение для групп, либо же унаследовать контроллер Structure_Controller_Show и написать свою реализацию показа групп.
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Оптимизация загрузки меню
llirik, а кодом можете помочь? знаний не хватает.
Делаю сайты на HostCMS! Подробнее по почте anton.yurzanov@gmail.com
Модератор
#
Re: Оптимизация загрузки меню
Varkolak,
в хуке Structure_Controller_Show.onBeforeFindShopGroups вам передается 3 аргумента array($oShop_Groups, $parentObject, $oShop)
Через $oShop_Groups->queryBuilder()  вы можете добавить доп.ограничение, например, где parent_id = 0, таким образом выберутся родительские группы. Затем написать или и выбрать группы, где в качестве parent_id будет подзапрос, с выборкой корневых групп. Как писать подзапросы см. https://www.hostcms.ru/documentation/modules/core/querybuilder/
Готовый код хука можете разместить здесь для проверки.
Авторизация