Группа элемента

#
Группа элемента
как в xsl можно вызвать группу инф элемента?
то есть есть шаблон вывода списка элементов инфосистемы
и для каждого хочется добавить поле
Этот элемент из группы: группа
#
Re: Группа элемента
В XSL-шаблон для списка элементов инфосистемы в тэмплейт для элемента добавьте код:

<!-- ======================== -->
<!-- Данные об инф. элементах -->
<!-- ======================== -->
<xsl:template match="blocks/items/item">
...
<xsl:if test="@group_id != 0">
<xsl:variable name="current_group" select="@group_id"/>
      Это элемент из группы: <xsl:value-of disable-output-escaping="yes" select="/document/blocks/group[@id = $current_group]/name" />
<br/>
</xsl:if>
...
#
Re: Группа элемента
Работает. А подскажите как вывести в самом информационном элементе, ссылки на элементы той группы в которой находится сам элемент. Типа: "Статьи по теме". Уже несколько часов не могу разобраться.
Модератор
#
Re: Группа элемента
Стандартно никак. В XML инфоэлемента не идет информация о других элементах. Возможно Вам поможет такое решение: http://www.hostcms.ru/forums/22/3172/
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Группа элемента
Теперь понятно.

alexander.egorov писал(а):
Возможно Вам поможет такое решение: http://www.hostcms.ru/forums/22/3172/

Это не совсем то. Возможно ли вывести в шаблоне для ИС, скажем в отдельной колонке, список элементов той группы, в которй находится текущий элемент? В общем как вызвать родительскую группу? Хотя бы подскажите переменную. Чувствую API придется курить очень долго.
#
Re: Группа элемента
После долгого изучения API и форума набросал следующий код, который вставил в шаблон ИС:
<h1>Статьи по теме:</h1>
<?php
$InformationSystem = new InformationSystem();
$InformationSystem = & singleton('InformationSystem');
$param = array();
$InformationSystemId = 5; // false - из всех групп, 0 - из корневой группы
$InformationGroupId = $result['group']; // Вывод элементов из родительской группы
$xsl_name = 'СписокЭлементовИнфосистемыСсылкиСправа';
$items_begin = 0;
$items_on_page = 3;
$property['OrderField'] = 'RAND()'; // Произвольная сортировка
$property['xml_show_group_type'] = 'none';  // Запрещаем вывод групп
$InformationSystem->ShowInformationSystem($InformationSystemId, $InformationGroupId, $xsl_name, $items_on_page, $items_begin, $external_propertys, $property);
?>

Но осталcя вопрос, что указать в значении "$InformationSystemId = 5;" вместо номера ИС, чтобы выводились элементы из любой ИС, в которой находишься, по римеру:
$InformationGroupId = $result['group'];

Иначе для каждой ИС (у меня их 4) придется делать свой шаблон ИС, что очень не удобно.
#
Re: Группа элемента
И еще как сделать чтобы строка
<h1>Статьи по теме:</h1>

не отображалась если элементы не выводятся?
Вставляю в Шаблон "СписокЭлементовИнфосистемыСсылкиСправа":

<xsl:if test="blocks/item_id = 0">
<h1>Статьи по теме:</h1>
</xsl:if>

но почему-то не работает.
#
Re: Группа элемента
sersh_k писал(а):
$InformationSystemId = 5;» вместо номера ИС,

Если у вас через шаблон ИС будут показываться только ИС, то можно определить ID ИС через ID текущего узла структуры, и подставлять вместо 5 определившееся значение
Заказов не беру. Консультирую редко.
#
Re: Группа элемента
Вот даже код
$InformationSystemId = $InformationSystem->GetInformationSystemByStructureId(CURRENT_STRUCTURE_ID);

где CURRENT_STRUCTURE_ID - это системная константа (заменять ее ни на что не нужно!)
Заказов не беру. Консультирую редко.
#
Re: Группа элемента
Спасибо Kotoff, вы как всегда помогли.
Авторизация