Уважаемые господа, прошу вашей помощи.
Нужно в меню информационной системы добавить к выбранной группе класс "active"
Меню:
Группа 1
Группа 2
Группа 3
При переходе в "группу 2", к тегу <li> добавляться класс "active".
Код вызова:
<?php
$Structure_Controller_Show = new Structure_Controller_Show(
Core_Entity::factory('Site', CURRENT_SITE));
$oStructure = Core_Entity::factory('Structure', CURRENT_STRUCTURE_ID);
while ($oStructure->parent_id)
{
$oStructure = $oStructure->getParent();
}
$Structure_Controller_Show->xsl(Core_Entity::factory('Xsl')
->getByName('боковоеменю'))
->showInformationsystemGroups(TRUE)
->showShopGroups(TRUE)
->parentId($oStructure->id)
->menu(1)
->show();
?>
XSL шаблон:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:hostcms="http://www.hostcms.ru/"
exclude-result-prefixes="hostcms">
<xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
<xsl:template match="/site">
<ul>
<!-- Выбираем узлы структуры первого уровня -->
<xsl:apply-templates select="*[@id][show=1][active=1]" />
</ul>
</xsl:template>
<!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
<xsl:variable name="current_structure_id" select="/site/current_structure_id"/>
<xsl:template match="*">
<!-- Шаблон выборки дочерних узлов -->
<xsl:variable name="sub" select="*[@id][show=1][active=1]" />
<xsl:variable name="informationsystem_group" select="/site/current_structure_id" />
<li>
<xsl:attribute name="class">
<xsl:if test="$current_structure_id = @id or count(.//structure[@id=$current_structure_id]) = 1">active </xsl:if>
<xsl:if test="informationsystem_group = @id">active </xsl:if>
</xsl:attribute>
<!-- Определяем адрес ссылки -->
<xsl:variable name="link">
<xsl:choose>
<!-- Если внутренняя ссылка -->
<xsl:when test="link != ''">
<xsl:value-of disable-output-escaping="yes" select="link"/>
</xsl:when>
<!-- Если внешняя ссылка -->
<xsl:otherwise>
<xsl:value-of disable-output-escaping="yes" select="url"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Показывать ссылку? -->
<a href="{$link}">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
<xsl:if test="$sub and 0">
<ul>
<xsl:apply-templates select="$sub" />
</ul>
</xsl:if>
</li>
</xsl:template>
</xsl:stylesheet>
Для добавления класса добавил такую строку: <xsl:if test="informationsystem_group = @id">active </xsl:if>
Как мне сказали в техподдержке (за что им огромное спасибо), нужно еще объявить переменную informationsystem_group.
Мой вариант: <xsl:variable name="informationsystem_group" select="/site/current_structure_id" />
В общем ничего не получается, что-то.
За правильную подсказку/вариант, готов заплатить.
Заранее всем спасибо.