Вывод в меню структуры информационных элементов

#
Вывод в меню структуры информационных элементов
Добрый день!
Вывожу в меню структуры группы и элементы инфосистем.
Из одной инфосистемы выводить элементы не нужно, только группы.
Как это ограничить в php коде, чтобы не передавать в XML лишнюю информацию?
<?php
     // Меню
     $Structure_Controller_Show = new Structure_Controller_Show(
          Core_Entity::factory('Site', CURRENT_SITE));
          $Structure_Controller_Show
               ->xsl(Core_Entity::factory('Xsl')
               ->getByName('ВерхнееМеню'))
              ->showInformationsystemGroups(TRUE)
              ->showInformationsystemItems(TRUE)
               ->menu(3)
               ->show();
     ?>
iNikSite - дизайн и фронтенд разработка
Модератор
#
Re: Вывод в меню структуры информационных элементов
iNik,

Используйте хук:

* @hostcms-event Structure_Controller_Show.onBeforeFindInformationsystemItems


В нем  в $args[0] будет лежать объект $oInformationsystem_Items. Проверяете на ID ИС которую хотите исключить и через quertBuilder() ставите ->limit(0)
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Вывод в меню структуры информационных элементов
Спасибо за подсказку. Сделал вот так.
<?php
                     // Левое  меню
                     $Structure_Controller_Show = new Structure_Controller_Show(
                        Core_Entity::factory('Site', CURRENT_SITE));
                                                        $Structure_Controller_Show->showProperties(TRUE);
                     $Structure_Controller_Show->xsl(
                        Core_Entity::factory('Xsl')->getByName('ЛевоеМенюСайт2')
                     )
                        ->menu(4)
                                                                ->showInformationsystemGroups(TRUE)
                                                                ->showInformationsystemItems(TRUE)
                                                                ->showShopGroups(TRUE);

class Structure_Controller_Show_Observer
{
   static public function onBeforeFindInformationsystemItems($object, $args)
   {
      $args[0]
               ->queryBuilder()
               ->where('informationsystem_id', '=', 18)
               ->limit(0);
   }
}
Core_Event::attach('Structure_Controller_Show.onBeforeFindInformationsystemItems', array('Structure_Controller_Show_Observer', 'onBeforeFindInformationsystemItems'));

   $Structure_Controller_Show->show();

         ?>

Элементы Инфосистемы 18 не передаются в XML. То, что надо
iNikSite - дизайн и фронтенд разработка
Модератор
#
Re: Вывод в меню структуры информационных элементов
iNik,
проверки нет!

class Structure_Controller_Show_Observer
{
   static public function onBeforeFindInformationsystemItems($object, $args)
   {
      if ($args[2]->id == 18)
      {
         $args[0]
               ->queryBuilder()
               ->limit(0);
      }
   }
}
#
Re: Вывод в меню структуры информационных элементов
HostCMS писал(а):
iNik,
проверки нет!

Спасибо!
iNikSite - дизайн и фронтенд разработка
#
Re: Вывод в меню структуры информационных элементов
Может кто-нибудь подскажет - как вывести в меню группы конкретной информационной системы?
ID информационной системы 42, например.
#
Re: Вывод в меню структуры информационных элементов
Примерно так же как и описано выше, только использовать нужно хук @hostcms-event Structure_Controller_Show.onBeforeFindInformationsystemGroups
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Вывод в меню структуры информационных элементов
Не пойму, как надо делать...
Код у меня такой:
class Structure_Controller_Show_Observer {
   static public function onBeforeFindInformationsystemGroups($object, $args) {
      if ($args[2]->id == 42) {
           $args[0]
               ->queryBuilder()
               ->limit(0);
}}}
Core_Event::attach('Structure_Controller_Show.onBeforeFindInformationsystemGroups',
                   array('Structure_Controller_Show_Observer', 'onBeforeFindInformationsystemGroups'));

Но он "выключает" группы 42-ой информационной системы,
а мне надо наоборот, чтобы выводил группы только 42-ой информационной системы.
Подскажите!
#
Re: Вывод в меню структуры информационных элементов
Делайте тогда условие наоборот.  if ($args[2]->id != 42) {
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Вывод в меню структуры информационных элементов
Поменял, вместо == написал !=
Действительно теперь "включает" группы инфосистемы, но остальное остаётся тоже!
А мне надо, чтобы выводил группы ТОЛЬКО 42-ой информационной системы.
Код сейчас такой:
<?php
$xsl = Core_Array::get(Core_Page::instance()->widgetParams, 'xsl');
$Structure_Controller_Show = new Structure_Controller_Show(Core_Entity::factory('Site', CURRENT_SITE));
class Structure_Controller_Show_Observer {
   static public function onBeforeFindInformationsystemGroups($object, $args) {
      if ($args[2]->id != 42) {
           $args[0]
               ->queryBuilder()
               ->limit(0);
}}}
Core_Event::attach('Structure_Controller_Show.onBeforeFindInformationsystemGroups',
             array('Structure_Controller_Show_Observer', 'onBeforeFindInformationsystemGroups'));
$Structure_Controller_Show
   ->xsl(Core_Entity::factory('Xsl')
            ->getByName($xsl))
   ->showInformationsystemGroups(true)
   ->show();
?>
Авторизация