Выдано 134844 лицензии

Как получить подгруппы текущей группы магазина не используя groupsMode('all')

Как получить подгруппы текущей группы магазина не используя groupsMode('all')
#
btb.su
52
Как получить подгруппы текущей группы магазина не используя groupsMode('all') ? Проблема в том что групп в магазине очень много, поэтому groupsMode('all') сильно засоряет xml.
www.btb.su
Re: Как получить подгруппы текущей группы магазина не используя groupsMode('all')
#
hostcms
Модератор
16606
Есть режим 'tree', в нем будет уровень от текущей группы вверх и подгруппы текущей группы
Re: Как получить подгруппы текущей группы магазина не используя groupsMode('all')
#
btb.su
52
Я неправильно сформулировал, получается нужны группы 2 уровня от текущей. Нужны подгруппы подгрупп текущей группы. Находил темы где требовалось подобное и всё решалось через 'all', в моём случае 'all' ложит сайт.
www.btb.su
Re: Как получить подгруппы текущей группы магазина не используя groupsMode('all')
#
hostcms
Модератор
16606
btb.su,
в таком случае необходимо включить режим 'none', самостоятельно выбрать требуемые группы и добавить их контроллеру, по ссылке "Добавление внешних данных в контроллер" и "Добавление списка производителей в контроллер показа магазина".
Re: Как получить подгруппы текущей группы магазина не используя groupsMode('all')
#
HostDEV.pw
813
можно через хук
Core_Event::attach('Shop_Controller_Show.onBeforeShow', function(Shop_Controller_Show $oController) {
   $iCurGroup = $oController->group;
   if (is_int($iCurGroup) && $iCurGroup > 0) {
      $aGroups = $oController->getShopGroups();
      if (isset($aGroups[$iCurGroup]) && count($aGroups[$iCurGroup] > 0)) {
         $aIDS = array();
         foreach ($aGroups[$iCurGroup] as $oGroup) {
            $aIDS[] = $oGroup->id;
         }
         $oShopGroups = $oController->getEntity()->shop_groups;
         $oShopGroups->queryBuilder()
            ->where('parent_id', 'IN', $aIDS)
            ->where('active',  '=', 1);
         $aShopGroups = $oShopGroups->findAll();
         if (count($aShopGroups)) {
            $oGroupsXML = Core::factory('Core_Xml_Entity')->name('subgroups');
            foreach ($aShopGroups as $oShopGroup) {
               $oShopGroup->clearEntities();
               $oGroupsXML->addEntity($oShopGroup);
            }
            $oController->addEntity($oGroupsXML);
         }
      }
   }
});
HostDev.pw - модули для HostCMS
Re: Как получить подгруппы текущей группы магазина не используя groupsMode('all')
#
lyubaaa
38
btb.su,
Поделитесь как решили вопрос, тоже меню большое с большим количеством групп.
Re: Как получить подгруппы текущей группы магазина не используя groupsMode('all')
#
HostDEV.pw
813
lyubaaa,
приведенный код не подходит?
HostDev.pw - модули для HostCMS
Re: Как получить подгруппы текущей группы магазина не используя groupsMode('all')
#
Seri
768
lyubaaa,
Вам необходимо получить группы и её подгрупп только у текущей группы? Нужно сохранить иерархию?
E-mail: info@syrbek.ru / skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
Re: Как получить подгруппы текущей группы магазина не используя groupsMode('all')
#
lyubaaa
38
очень большой xml. надо только группы и подгруппы до 3 уровня у текущей групп
Re: Как получить подгруппы текущей группы магазина не используя groupsMode('all')
#
Seri
768
У контроллера https://www.hostcms.ru/api6/class-Structure_Controller_Show.html
Есть метод
_addShopGroupsByParentId($parent_id, $parentObject, $level = 0)

Можете взять за основу и поиграть в level уровнях.
E-mail: info@syrbek.ru / skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
Авторизация