Toshi писал(а):
Если не находимся в группе, то выводим все группы где parent_id=0
Если находимся в подгруппе главной группы выводим еще дополнительно список с подгруппами этой группы, а если находимся в подгруппе подгруппы, то выводим группы с parent_id=0 и подгруппы этой главной группы, в которой находимся.
- идентификатор текущей группы инфосистемы(если пользователь находится именно в группе или в инфоэлементе) будет доступен в элементе суперглобального массива $GLOBALS['INFSYS_result']['group']. Иначе(если пользователь не в группе и не в элементе) - этого элемента массива существовать вообще не будет. Поэтому в вашем коде вы можете:
1. организовать проверку на существование этого элемента($GLOBALS['INFSYS_result']['group']);
2. в случае существования элемента $GLOBALS['INFSYS_result']['group'], и если он имеет значение больше нуля, то его можно передавать в метод GetInformationGroup для получения полной информации о группе(с целью выяснения является ли она корневой или нет. Это зависит от того какой идентификатор имеет родительская группа для данной - ноль или больше нуля). Это можно делать в цикле(т.е. применять метод GetInformationGroup), чтобы получать информацию о группе, которой принадлежит родительская группа текущей группы.
Исходя из полученной информации, можно передавать различные параметры(флаги) в XML-код, чтобы средствами XSL-шаблона выводить только тот набор групп, который требуется в текущей ситуации.