Спасибо! Разобрался. Может у кого-то будет аналогичный вопрос. Автор решения пользователь ferdinant:
В настройках ТДС Информационная система вместо строки:
$Informationsystem_Controller_Show = new Informationsystem_Controller_Show($oInformationsystem);
Вставляем следующий код:
class My_Informationsystem_Controller_Show extends Informationsystem_Controller_Show
{
protected function _groupCondition()
{
$oInformationsystem = $this->getEntity();
if ($this->group)
{
// если ID группы не 0, т.е. не корневая группа
// получаем подгруппы
$aSubGroupsID = $this->fillInformationsystemGroup($oInformationsystem->id, $this->group); // добавляем текущую группу в массив
$aSubGroupsID[] = $this->group;
$this->informationsystemItems()
->queryBuilder()
->where('informationsystem_items.informationsystem_group_id', 'IN', $aSubGroupsID); // получаем все товары из подгрупп
}
else
{
$this->informationsystemItems()
->queryBuilder()
->where('informationsystem_items.informationsystem_group_id', 'NOT IN', Core_QueryBuilder::select('id')->from('informationsystem_groups')->where('informationsystem_id', '=', $oInformationsystem->id)->where('active', '=', 0));
}
return $this;
}
protected $_aGroupTree = array();
public function fillInformationsystemGroup($iInformationsystemId, $iInformationsystemGroupParentId = 0, $iLevel = 0)
{
$iInformationsystemId = intval($iInformationsystemId);
$iInformationsystemGroupParentId = intval($iInformationsystemGroupParentId);
$iLevel = intval($iLevel);
if ($iLevel == 0)
{
$aTmp = Core_QueryBuilder::select('id', 'parent_id')
->from('informationsystem_groups')
->where('informationsystem_id', '=', $iInformationsystemId)
->where('deleted', '=', 0)
->execute()->asAssoc()->result();
foreach ($aTmp as $aGroup)
{
$this->_aGroupTree[$aGroup['parent_id']][] = $aGroup;
}
}
$aReturn = array();
if (isset($this->_aGroupTree[$iInformationsystemGroupParentId]))
{
foreach ($this->_aGroupTree[$iInformationsystemGroupParentId] as $childrenGroup)
{
$aReturn[] = $childrenGroup['id'];
$aReturn = array_merge($aReturn, $this->fillInformationsystemGroup($iInformationsystemId, $childrenGroup['id'], $iLevel + 1));
}
}
$iLevel == 0 && $this->_aGroupTree = array();
return $aReturn;
}
}
$Informationsystem_Controller_Show = new My_Informationsystem_Controller_Show($oInformationsystem);
Подскажите, пожалуйста, фрагмент XSL шаблона который даст такой результат:
Название группы 1
Элемент группы 1 (доп свойства этого элемента)
Элемент группы 1 (доп свойства этого элемента)
Элемент группы 1 (доп свойства этого элемента)
Название группы 2
Элемент группы 2 (доп свойства этого элемента)
Элемент группы 2 (доп свойства этого элемента)
Элемент группы 2 (доп свойства этого элемента)
Название группы 3
Элемент группы 3 (доп свойства этого элемента)
Элемент группы 3 (доп свойства этого элемента)
Элемент группы 3 (доп свойства этого элемента)
и т.д
Буду очень благодарен!