h4mpy, при выводе меню из макета сайта необходимо добавить блок, в котором будут определяться значения идентификаторов текущей группы ИС, текущего элемента ИС, текущей группы магазина и текущего товара магазина. Это делается потому, что по умолчанию, при нахождении где-нибудь глубоко в магазине или в ИС в XML-коде в качестве значения узла current_structure_id будет находиться идентификатор узла магазина или ИС, а не идентификатор текущей группы или элемента. Вот пример блока. Вам необходимо подставить Ваши значения для $InformationSystemId и $shop_id:
<?
/* Выводим меню на основе структуры */
$param = array();
$InformationSystem = new InformationSystem();
$InformationSystemId = 1;
$arr = array();
$arr = $InformationSystem->GetInformationFromPath(1);
$rez_item = false;
$rez_item = $InformationSystem->GetIdInformationItem($arr['item'],$arr['group'],$InformationSystemId);
$external_propertys = array();
if($arr['group'] != false && $arr['group'] != 0)
{
$external_propertys['ТекущаяГруппа'] = $arr['group'];
};
if($rez_item != false)
{
$external_propertys['ТекущийЭлемент'] = $rez_item;
};
$shop = new shop();
$shop_id = 2;
$mas = $shop->GetItemPath($shop_id);
if($mas['group'] != false && $mas['group'] != 0)
{
$external_propertys['ТекущаяГруппа'] = $mas['group'];
};
if($mas['item'] != false)
{
$external_propertys['ТекущийЭлемент'] = $mas['item'];
};
$Structure->ShowStructure(1,'ЦентральноеМеню', $param, $external_propertys);
?>
Кроме того, важно внести изменения в XSL-шаблон. Вместо:
<!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
<xsl:variable name="csid" select="/document/structure/current_structure_id"/>
Необходимо:
<!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
<xsl:variable name="current_structure_id"><xsl:choose>
<xsl:when test="/document/ТекущийЭлемент/node()">item_<xsl:value-of select="/document/ТекущийЭлемент"/></xsl:when>
<xsl:when test="/document/ТекущаяГруппа/node()">group_<xsl:value-of select="/document/ТекущаяГруппа"/></xsl:when>
<xsl:otherwise><xsl:value-of select="/document/structure/current_structure_id"/></xsl:otherwise>
</xsl:choose></xsl:variable>
И еще важно замечание. Вместо:
<xsl:if test="current_structure_id=@id"><li><xsl:value-of disable-output-escaping="yes" select="name"/></li></xsl:if>
<xsl:if test="current_structure_id!=@id"><li><a href="{$link}"><xsl:value-of disable-output-escaping="yes" select="name"/></a></li></xsl:if>
следует использовать:
<xsl:if test="$current_structure_id=@id"><li><xsl:value-of disable-output-escaping="yes" select="name"/></li></xsl:if>
<xsl:if test="$current_structure_id!=@id"><li><a href="{$link}"><xsl:value-of disable-output-escaping="yes" select="name"/></a></li></xsl:if>