Древовидное (раскрывающееся) навигационное меню для магазина

#
Древовидное (раскрывающееся) навигационное меню для магазина
Делаем раскрывающееся навигационное меню состоящее из групп (подгрупп) магазина.
Основное отличие от этого меню http://www.hostcms.ru/forums/22/1997/ заключается в том, что подгруппы-потомки отображаются только, если мы находимся в группе-родителе. Это очень удобно, когда в магазине большое количество групп (подгрупп). Описанное ниже навигационное меню будет гораздо опрятнее выглядеть и не растягиваться на несколько экранов по-вертикали.


Код для вставки меню в макет сайта (шаблон страницы):

<?
                    $shop = new shop();
                    $ShopId = 5;//Идентификатор магазина
                    $rez = array();
                    $rez = $shop->GetItemPath($ShopId);
               $xsl_catalog = 'НавигационноеМеню';//Название XSL-шаблона
               $param = array();
               $param['xml_show_group_type'] = 'all';//Отображать все группы
               $param['items_on_page'] = 1;
               $param['current_group_id'] = $rez['group'];//Выводим в XML ИД текущей группы
                    $shop->ShowShop($ShopId, $xsl_catalog, $param);
                     ?>



XSL-шаблон:

<?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="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">
      <ul>
         <xsl:apply-templates select="group"/>
      </ul>
   </xsl:template>
   
   <!-- Правое меню групп товара -->
   <xsl:template match="group">
      
      <xsl:variable name="parent" select="@id"/>
      
      <xsl:variable name="parent_group_id" select="/shop/@current_group_id"/>
      
      <li style="color: #663300; padding-bottom:5px">
         
         <xsl:if test="@id = $parent_group_id">
            
            <font style="font-weight:bold">
               
               <xsl:value-of disable-output-escaping="yes" select="name"/>
               
            </font>
            
         </xsl:if>
         
         <xsl:if test="@id != $parent_group_id">
            
            <a href="{/shop/path}{fullpath}" style="color: #663300">
               
               <xsl:value-of disable-output-escaping="yes" select="name"/>
               
            </a>
            
         </xsl:if>
         
      </li>
      
      <xsl:if test="(@id = $parent_group_id and count(group) &gt; 0) or (count(group[@id = $parent_group_id]) &gt; 0)">
         <ul style="padding-left:10px; font-size:11px; color: #663300">            
            <xsl:apply-templates select="group"/>
         </ul>
      </xsl:if>
      
   </xsl:template>
   
</xsl:stylesheet>
#
Re: Древовидное (раскрывающееся) навигационное меню для магазина
поиск надо юзать, я уже выкладывал в этом разделе, это решение!
Делаю сайты на HostCMS! Подробнее по почте anton.yurzanov@gmail.com
#
Re: Древовидное (раскрывающееся) навигационное меню для магазина
Спору нет, ты конечно молодец. Но в твоем варианте группы - подгруппы - подподгруппы всегда в раскрытом виде, а в этом меню они раскрываются по мере надобности... здесь меню в действии http://gazru.ru/gazovoe-oborudovanie/
#
Re: Древовидное (раскрывающееся) навигационное меню для магазина
о! спасибо! то что искали!
#
Re: Древовидное (раскрывающееся) навигационное меню для магазина
А для utf-8 что-то нужно менять?
sanross
#
Re: Древовидное (раскрывающееся) навигационное меню для магазина
2 html
Спасибо.
Именно такой вариант был нужен.
Реализация здесь: http://ooo-slavia-ru.1gb.ru/

А для utf-8 надо заголовок документа (в приведенном выше 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">
   <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"/>

#
Re: Древовидное (раскрывающееся) навигационное меню для магазина
тут вместе с товарами: http://www.altay-magazin.ru/shop/
плюс пожно  не переходить на промежуточные страници а сразу попасть на страницу товара в другом  разделе...
#
Re: Древовидное (раскрывающееся) навигационное меню для магазина
kvasiliy писал(а):
плюс пожно не переходить на промежуточные страници а сразу попасть на страницу товара в другом разделе

не могли бы вы выложить пример вашего меню?
#
Re: Древовидное (раскрывающееся) навигационное меню для магазина
kvasiliy писал(а):
тут вместе с товарами: http://www.altay-magazin.ru/shop/


Выложите пожалуйста реализацию вашего меню (левого и верхнего если можно на fhammvat@znvy.eh). Спасибо
#
Re: Древовидное (раскрывающееся) навигационное меню для магазина
Здравствуйте.

Это вынос мозга Убился уже об древовидную структуру, которая раскрывается не через js и с большими уровнями вложенности.

Данный пример прекрасно отображает группы и подгруппы магазина, но, к сожалению, только вплоть до 3го уровня

Т.е.

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


Отображается, но если выбрать, например, под-под-подкатегорию (т.е. 4й уровень хе-хе), то отображается только первый уровень. Пример:

Категория 1
Подкатегория 1
  Под-подкатегория 1
   Под-под-подкатегория 1 (4й уровень)
Подкатегория 2
Категория 2
Подкатегория 3
  Под-подкатегория 2


Помогите, пожалуйста
Авторизация