Выборка всех дочерних групп для группы

Модератор
#
Выборка всех дочерних групп для группы
Выборка всех дочерних групп для группы. Аналогично реализуется для информационных систем.
function getChildrenGroups($shop_id, $shop_group_id)
{
   $aReturn = array();
   $oCurrent_Shop_Group = Core_Entity::factory('Shop_Group', $shop_group_id);
   
   $oShop_Groups = $oCurrent_Shop_Group->Shop_Groups;
   $oShop_Groups->queryBuilder()->where('shop_id', '=', $shop_id);
   
   $aShop_Groups = $oShop_Groups->findAll();
   foreach ($aShop_Groups as $oShop_Group)
   {
      $aReturn[] = $oShop_Group;
      $aReturn = array_merge($aReturn, getChildrenGroups($shop_id, $oShop_Group->id));
   }
   
   return $aReturn;
}

$shop_group_id = 0;
$shop_id = 1;
$aChildrenGroups = getChildrenGroups($shop_id, $shop_group_id);
foreach ($aChildrenGroups as $oShop_Group)
{
   echo '<br />id = ', $oShop_Group->id;
}
#
Re: Выборка всех дочерних групп для группы
Для информационных систем:
function getChildrenGroups($informationsystem_id, $informationsystem_group_id)
{
   $aReturn = array();
   $oCurrent_Informationsystem_Group = Core_Entity::factory('Informationsystem_Group', $informationsystem_group_id);
  
   $oInformationsystem_Groups = $oCurrent_Informationsystem_Group ->Informationsystem_Groups;
   $oInformationsystem_Groups->queryBuilder()->where('informationsystem_id', '=', $informationsystem_id);
  
   $aInformationsystem_Groups = $oInformationsystem_Groups->findAll();
   foreach ($aInformationsystem_Groups as $oInformationsystem_Group)
   {
      $aReturn[] = $oInformationsystem_Group;
      $aReturn = array_merge($aReturn, getChildrenGroups($informationsystem_id, $oInformationsystem_Group->id));
   }
  
   return $aReturn;
}

$informationsystem_group_id = 0;
$informationsystem_id = 1;
$aChildrenGroups = getChildrenGroups($informationsystem_id, $informationsystem_group_id);
foreach ($aChildrenGroups as $oInformationsystem_Group)
{
   echo '<br />id = ', $oInformationsystem_Group->id;
}
Компания Оригинал - www.original2.ru
#
Re: Выборка всех дочерних групп для группы
В случае, если необходимо в ИС выводить все элементы из дочерних групп, то в ТИЦ добавляется примерно следующее:
function getChildrenGroups($informationsystem_id, $informationsystem_group_id)
{
   $aReturn = array();
   $oCurrent_Informationsystem_Group = Core_Entity::factory('Informationsystem_Group', $informationsystem_group_id);
  
   $oInformationsystem_Groups = $oCurrent_Informationsystem_Group ->Informationsystem_Groups;
   $oInformationsystem_Groups->queryBuilder()->where('informationsystem_id', '=', $informationsystem_id);
  
   $aInformationsystem_Groups = $oInformationsystem_Groups->findAll();
   foreach ($aInformationsystem_Groups as $oInformationsystem_Group)
   {
      $aReturn[] = $oInformationsystem_Group;
      $aReturn = array_merge($aReturn, getChildrenGroups($informationsystem_id, $oInformationsystem_Group->id));
   }
  
   return $aReturn;
}

$informationsystem_group_id = $Informationsystem_Controller_Show->group;
$informationsystem_id = Core_Array::get(Core_Page::instance()->libParams, 'informationsystemId');
$aChildrenGroups = getChildrenGroups($informationsystem_id, $informationsystem_group_id);
$in = array($Informationsystem_Controller_Show->group);
foreach ($aChildrenGroups as $oInformationsystem_Group)
{
   $in[] = $oInformationsystem_Group->id;
}

$Informationsystem_Controller_Show->group(FALSE);
$Informationsystem_Controller_Show
    ->informationsystemItems()
    ->queryBuilder()
    ->where('informationsystem_items.informationsystem_group_id', 'IN', $in);


HostCMS поправьте, если не так
Компания Оригинал - www.original2.ru
Модератор
#
Re: Выборка всех дочерних групп для группы
original, вроде все хорошо.
#
Re: Выборка всех дочерних групп для группы
Господа, а подскажите плз где и что изменить чтобы  в xml получить элементы (товары) подчиненных групп.

Например: нахожусь в группе товаров КаталогУровень3 и мне нужно в xml получить все КаталогУровень4 и товары в них.

#
Re: Выборка всех дочерних групп для группы
Менять нужно типовую динамическую страницу, которая отвечает за вывод требуемого раздела
разработка сайтов, фирменных стилей, интерфейсов
#
Re: Выборка всех дочерних групп для группы
Уже легче - где менять разобрались.

А какие именно изменения внести?
В старых api еще коекак ориентировался то 6 версия для меня темный лес пока
#
Re: Выборка всех дочерних групп для группы
упс, поторопился и дал наводку от 5ки,

      // Новости
      $Informationsystem_Controller_Show = new Informationsystem_Controller_Show(
         Core_Entity::factory('Informationsystem', 1)
      );
      $Informationsystem_Controller_Show
         ->xsl(
            Core_Entity::factory('Xsl')->getByName('СписокНовостейНаГлавной')
         )
         ->groupsMode('none')
         ->itemsForbiddenTags(array('text'))
         ->group(FALSE)
         ->limit(3)
         ->show();


а вот как узнать текущую группу, не приебегая к
$oInformationsystem = Core_Entity::factory('Informationsystem', Core_Array::get(Core_Page::instance()->libParams, 'informationsystemId'));

$Informationsystem_Controller_Show = new Informationsystem_Controller_Show($oInformationsystem);

$Informationsystem_Controller_Show
   ->limit(Core_Array::get(Core_Page::instance()->libParams, 'itemsOnPage'))
   ->parseUrl();

echo $Informationsystem_Controller_Show->group;


узнаем у модераторов ))
разработка сайтов, фирменных стилей, интерфейсов
Модератор
#
Re: Выборка всех дочерних групп для группы
toasterec писал(а):
а вот как узнать текущую группу, не приебегая к

узнать группу на странице с опубликованной типовой с ИС?
#
Re: Выборка всех дочерних групп для группы
HostCMS писал(а):
узнать группу на странице с опубликованной типовой с ИС?

да, знать какая группа ИС сейчас активна, в макете
разработка сайтов, фирменных стилей, интерфейсов
Авторизация