Многоуровневое меню интернет-магазина

#
Многоуровневое меню интернет-магазина
У меня вот такая структура интеренет-магазина:

Категория 1
--Подкатегория 11
--Подкатегория 12
--Подкатегория 13
Категория 2
--Подкатегория 21
--Подкатегория 22
Категория 3
--Подкатегория 31
--Подкатегория 32


Как сделать так, чтобы когда мы находимся в "Категория 1" подкатегории 11,12 и 13 отображались, а все остальные были скрыты?

Категория 1
--Подкатегория 11
--Подкатегория 12
--Подкатегория 13
Категория 2
Категория 3


Буду признателен за помощь
Модератор
#
Re: Многоуровневое меню интернет-магазина
Пример:


<?xml version="1.0" encoding="utf-8"?>
<!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="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
   
   <!-- МагазинГруппыТоваровНаГлавной -->
   
   <xsl:template match="/">
      <xsl:apply-templates select="/shop"/>
   </xsl:template>
   
   <!-- Шаблон для магазина -->
   <xsl:template match="/shop">
      <SCRIPT>
         <xsl:comment>
            <xsl:text disable-output-escaping="yes">
               <![CDATA[
               function show_hide_menu(id)
               {
               if (obj = document.getElementById(id))
               {
               obj.style.display == 'none' ? obj.style.display = 'block' : obj.style.display = 'none';
               return false;
               }
               return true;
               }
               ]]>
            </xsl:text>
         </xsl:comment>
      </SCRIPT>
      
   <h2><a href="{path}" title="Интернет-магазин">Интернет-магазин</a></h2>
      
      <ul class="left_menu" id="shop_menu">
         <xsl:apply-templates select="shop_group"/>
      </ul>
   </xsl:template>
   
   <!-- Шаблон для групп товара -->
   <xsl:template match="shop_group">
      <xsl:variable name="shop_group_id" select="/shop/ТекущаяГруппа" />
      <li>
         <!-- Если это подпункт (родитель не равен 0) - выводим слева от него тире -->
         <xsl:if test="@parent != 0">
            &#8212;
         </xsl:if>
         
         <a href="{/shop/path}{fullpath}" onClick="return show_hide_menu('{@id}');">
            <xsl:value-of disable-output-escaping="yes" select="name"/>
         </a>
         <xsl:variable name="style_type">
            <xsl:choose>
               <xsl:when test="descendant-or-self::shop_group[@id=$shop_group_id]/node()">
                  block
               </xsl:when>
               <xsl:otherwise>
                  none
               </xsl:otherwise>
            </xsl:choose>
         </xsl:variable>
         <!-- Если есть подгруппы -->
         <xsl:if test="shop_group">
            <ul class="left_menu gray_link gray" id="{@id}" style="display: {$style_type}">
               <xsl:apply-templates select="shop_group"/>
            </ul>
         </xsl:if>
      </li>
   </xsl:template>
</xsl:stylesheet>
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
#
Re: Многоуровневое меню интернет-магазина
Вот у вас в коде есть такая строчка
<xsl:variable name="shop_group_id" select="/shop/ТекущаяГруппа" />

Что нушно указать вместо ТекущаяГруппа? id группы?
#
Re: Многоуровневое меню интернет-магазина
Не получается у меня вывести подразделы данным способом

Все разделы получают style="display: none"
Модератор
#
Re: Многоуровневое меню интернет-магазина
Sanny писал(а):
Что нушно указать вместо ТекущаяГруппа?

Её нужно передать через addEntity() при вызове меню. Пример: http://www.hostcms.ru/documentation/guide/modules/core/controllers/ , последний пункт.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
Авторизация