Добрый день. Я постараюсь вопрос задать еще раз.
Мы выводим в отдельном месте макета Подменю
<!-- Дополнительное меню -->
<?
$Structure = new Structure();
$row_structure = $Structure->GetStructureItem(CURRENT_STRUCTURE_ID);
$structure_parent_id = $row_structure['structure_parent_id'];
$param['parent_id'] = CURRENT_STRUCTURE_ID;
while ($structure_parent_id!=0)
{
$row_structure = $Structure->GetStructureItem($structure_parent_id);
$structure_parent_id = $row_structure['structure_parent_id'];
}
$param['parent_id'] = $row_structure['structure_id'];
$Structure->ShowStructure(false,'ДополнМеню',$param);
?>
Допустим у нас есть данная структура:
1 Компания (/company)
1.1 О нас (/company/about)
1.2 Контакты (/company/contacts)
2 Отзывы
3 Ссылки
Заходим в раздел "Компания" через основное меню и получаем в отдельном месте макета подменю:
1 О нас (/company/about)
2 Контакты (/company/contacts)
Ок
Но нужен немного другой рабочий вывод а именно с выводом названия(ссылки) родителя, ниже пример состояния Подменю когда мы только что перешли через основное меню в раздел "Компания"
1 Компания (/company, текущий раздел)
2 О нас (/company/about)
3 Контакты (/company/contacts)
Ну и оно должно работать, перейдя например в "О нас"
1 Компания (/company)
2 О нас (/company/about, текущий раздел)
3 Контакты (/company/contacts)
В общем родителя как добавить?
Вот текущий обычный шаблон
<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="Windows-1251" indent="no" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
<!-- ДополнМеню -->
<xsl:template match="/document">
<xsl:if test="count(structure[show=1]) > 0">
<ul class="reset submenu">
<!-- Выбираем узлы структуры -->
<xsl:apply-templates select="structure[show=1]"/>
</ul>
</xsl:if>
</xsl:template>
<xsl:template match="structure">
<!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
<xsl:variable name="current_structure_id" select="current_structure_id"/>
<li>
<!--
Если заполнено доп. свойство добавляем к li это свойство в виде класса.
Выделяем текущую страницу добавлением к li класса active, если это текущая страница, либо у нее есть ребенок с атрибутом id, равным текущей. Если это первый элемент добавляем класс first.
-->
<xsl:if test="propertys/property[@xml_name = 'css']/value or current_structure_id = @id or count(.//structure[@id=$current_structure_id]) = 1 or position() = 1">
<xsl:attribute name="class">
<xsl:if test="propertys/property[@xml_name = 'css']/value != ''">
<xsl:value-of select="propertys/property[@name = 'css']/value"/>
</xsl:if>
<xsl:if test="current_structure_id = @id or count(.//structure[@id=$current_structure_id]) = 1">
<xsl:text> active</xsl:text>
</xsl:if>
<xsl:if test="position() = 1">
<xsl:text> first</xsl:text>
</xsl:if>
</xsl:attribute>
</xsl:if>
<!-- Показывать ссылку, или нет -->
<xsl:if test="show_link=1">
<!-- Определяем адрес ссылки -->
<xsl:variable name="link">
<xsl:choose>
<!-- Если внешняя ссылка -->
<xsl:when test="is_external_link=1">
<xsl:value-of disable-output-escaping="yes" select="external_link"/>
</xsl:when>
<!-- Иначе если внутренняя ссылка -->
<xsl:otherwise>
<xsl:value-of disable-output-escaping="yes" select="link"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<a href="{$link}" title="{name}">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
</xsl:if>
<!-- Если не показывать ссылку - выводим просто имя ссылки -->
<xsl:if test="show_link=0">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</xsl:if>
</li>
</xsl:template>
</xsl:stylesheet>