Метод GenXml4StructureLevelMass() - как им пользоваться?

#
Метод GenXml4StructureLevelMass() - как им пользоваться?
Всем доброго дня.

Возникла необходимость получить xml для структуры сайта, и передать его в инфосистему через external_xml.
Стал искать пути ее решения.
В точности нужный xml генерирует метод ShowStructure(), но к сожалению сам xml он возвращать не умеет
Нужный xml можно собрать самому, используя методы GetStructureXml() и GetXml4StructurePropertys(), последовательно обходя им все узлы структуры, полученные методом GetAllStructure(). Тоже вариант, конечно, но какой-то нерациональный.
Потому что есть еще метод GenXml4StructureLevelMass() который, судя по описанию, должен генерировать как раз тот XML, который потом используется в ShowStructure().

Однако в API использование метода GenXml4StructureLevelMass() описано плохо и нету примера его вызова. Поиск по форуму и по незакодированным файлам HostCMS тоже не дал результата.
В связи с чем просьба - подскажите, как пользоваться этим методом?

А то пока приходится извращаться - перехватывать вызов ShowStructure() с <xsl:output ... method="xml" /> и единственной инструкцией <xsl:copy-of select="document/structure"/> в XSL-шаблоне, и перехваченный вывод передавать в external_xml
Заказов не беру. Консультирую редко.
#
Re: Метод GenXml4StructureLevelMass() - как им пользоваться?
Kotoff писал(а):
как пользоваться этим методом?
- пример вызова:
$parent_id = 0;
$access = array();
if (class_exists('SiteUsers'))
{
   $SiteUsers = & singleton('SiteUsers');
   $site_user_id = $SiteUsers->GetCurrentSiteUser();

   if ($site_user_id > 0)
   {
      $access = $SiteUsers->GetGroupsForUser($site_user_id);
   }
}
else
{
   $site_user_id = 0;
}

if (!isset ($access))
{
   $access[] = 0;
}
$level = 0;
$param = array('show_groups' => true);
$Structure->GenXml4StructureLevelMass($parent_id, $access, $level, $param);

где $parent_id  - идентификатор родительского узла(то же самое, что и $param['parent_id'] для метода ShowStructure);
$access - массив с правами доступа;
$level - текущий уровень, по умолчанию 0;
$param - массив параметров, аналогичный массиву $param, передаваемому третьим параметром в метод ShowStructure.
#
Re: Метод GenXml4StructureLevelMass() - как им пользоваться?
О, спасибо вам большое, natalya!

А подскажите, пожалуйста, еще такой момент: есть ли для метода GenXml4StructureLevelMass какой-либо параметр, аналогичный параметру $menu_id у метода ShowStructure, ограничивающий количество узлов попадающих в выборку?
Или какая-либо возможность фильтрации по идентификатру меню?
Заказов не беру. Консультирую редко.
#
Re: Метод GenXml4StructureLevelMass() - как им пользоваться?
Пожалуйста)

Kotoff писал(а):
есть ли для метода GenXml4StructureLevelMass какой-либо параметр, аналогичный параметру $menu_id у метода ShowStructure, ограничивающий количество узлов попадающих в выборку?
- кроме описанных выше данный метод больше никаких параметров не принимает.
Kotoff писал(а):
Или какая-либо возможность фильтрации по идентификатру меню?
- такая возможность есть. Перед вызовом метода GenXml4StructureLevelMass вызовите метод GetStructure(он принимает идентификатор меню). В итоге внутри метода GetStructure сформируется массив(и запишет его в свойство текущего объекта класса), который затем будет использовать метод GenXml4StructureLevelMass в своем коде(т.е. вам сформированный массив передавать никуда не потребуется. Нужно просто вызвать GetStructure).
#
Re: Метод GenXml4StructureLevelMass() - как им пользоваться?
natalya, спасибо вам большое!
Заказов не беру. Консультирую редко.
#
Re: Метод GenXml4StructureLevelMass() - как им пользоваться?
Пожалуйста)
Авторизация