подменю в зависимости от категории

Модератор
#
Re: подменю в зависимости от категории
Матвеев Геннадий писал(а):
Да, а то что в API я не нашол описание
CURRENT_STRUCTURE_ID
это ничего страшного?


Спецконстанты опубликованы на данный момент в документации (в самом конце).

Матвеев Геннадий писал(а):
$Structure = new Structure();

Матвеев Геннадий писал(а):
$structure->Get

у Вас переменные имеют разные имена.
#
Re: подменю в зависимости от категории
учту что регистр играет роль.
но теперь вообще не отображается нулевой уровень меню
а есть только подменю, соответственно на главной странице меню отсутствует.

привожу шаблон вызова
<?
$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(4,'главное_меню',$param);
?>


и шаблон меню
  

<?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 method="html" indent="yes" encoding="Windows-1251"/>

<xsl:template match="/document">

<table border="0" width="90%" cellspacing="0" cellpadding="0" style="margin-left:4px; margin-right:4px;">
<tr>
<td width="90%" class="menu_line"></td>
</tr>

<!-- Выбираем узлы структуры только 1-го уровня вложенности -->
<xsl:apply-templates select="structure[show=1]"/>
</table>

</xsl:template>

<xsl:template match="structure">

<!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
<xsl:variable name="current_structure_id" select="/document/structure/current_structure_id"/>

<tr>
<td width="100%">

<!-- Показывать ссылку, или нет -->
<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="is_external_link"/></xsl:when>
<!-- Иначе если внутренняя ссылка -->
<xsl:otherwise><xsl:value-of disable-output-escaping="yes" select="link"/></xsl:otherwise>
</xsl:choose></xsl:variable>


<!-- Определяем стиль вывода ссылки -->
<xsl:variable name="link_style"><xsl:choose>
<!-- Выделяем текущую страницу жирным (если это текущая страница, либо у нее есть ребенок с ID, равным текущей) -->
<xsl:when test="current_structure_id=@id or count(.//structure[@id=$current_structure_id])=1">font-weight: bold</xsl:when>
<!-- Иначе обычный вывод с пустым стилем -->
<xsl:otherwise></xsl:otherwise>
</xsl:choose></xsl:variable>

<!-- Расчитываем размер отступа -->
<xsl:variable name="padding" select="level * 10"/>

<div style="padding-left: {$padding}px;"><img border="0" src="/images/menu_point.gif" class="menu_point" width="4" height="7" />
<a href="{$link}"><span style="{$link_style}"><xsl:value-of disable-output-escaping="yes" select="name"/></span></a>
</div>

</xsl:if>

<!-- Если не показывать ссылку - выводим просто имя ссылки -->
<xsl:if test="show_link=0">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</xsl:if>

</td>
</tr>
<tr>
<td width="90%" class="menu_line"></td>
</tr>

<!-- Подпункты выводим только для текущего узла -->
<xsl:if test="@id = $current_structure_id">
<xsl:apply-templates select="structure[show=1]"/>
</xsl:if>


</xsl:template>
</xsl:stylesheet>


наглядно тут
http://82.199.97.5/serv/moyka/ - подменю
http://82.199.97.5/ - гланая

Да, и если я не ошибаюсь в Вашем шаблоне ошибка переменной
$Structure->ShowStructure(4,'главное_меню',$param);
Модератор
#
Re: подменю в зависимости от категории
Матвеев Геннадий писал(а):
но теперь вообще не отображается нулевой уровень меню
а есть только подменю, соответственно на главной странице меню отсутствует.

Справа для главной страницы что должно выводиться?
#
Re: подменю в зависимости от категории
на главной справа должно отображаться меню первого уровня, при входе в категорию, плюс к первому уровню должны отображаться подуровни, при этом при входе в подуровень меню не должно пропадать...

т.е. на главной

О нас
Сервис
Студия
Контакты

на "студия"
О нас
Сервис
Студия
...........дизайн салона
...........переьяжка салона
...........адиоподготовка
Контакты

на "студия"-> "перетяжка салона"
О нас
Сервис
Студия
...........дизайн салона
...........переьяжка салона
............................................кожа
............................................велюр
...........адиоподготовка
Контакты
#
Re: подменю в зависимости от категории
Сейчас включил старое меню, тоесть просто расскрытое. а требуется свернутые подкатегории
Модератор
#
Re: подменю в зависимости от категории
Матвеев Геннадий,
переделано.

P.S. Не рекомендуем так комментировать:
<!--xsl:value-of disable-output-escaping="yes" select="name"/-->

луше делайте так, легче восстанавливать код:
<!--
<xsl:value-of disable-output-escaping="yes" select="name"/>
-->
#
Re: подменю в зависимости от категории
Спасибо огромное
Модератор
#
Re: подменю в зависимости от категории
пожалуйста
#
Re: подменю в зависимости от категории
А если не сложно можно опубликовать правильные коды.
Я так глянул по форумам ошибочных валом а правильных нет (может я не прав но для удобства всетаки было бы не плохо тему завершить правильным кодом)
Модератор
#
Re: подменю в зависимости от категории
Дмитрий Евгеньевич,
на первой старнцие код во втором сообщении, он исправлен.
Авторизация