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

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

В поиске нашел подобные темы(
http://www.hostcms.ru/forums/17/661
http://www.hostcms.ru/forums/22/1997
), но требуется немного
другое...
Для основы взял xsl-шаблон МагазинКаталогТоваров
Неоходимо немного переделать вывод подкатегорий интернет магазина

С ТАКОГО ВИДА

<ul>
<li>Группа1</li>
<li>Группа2</li>
<li>
--<ul>
--<li>Подгруппа1группы2</li>
----<ul>
-----<li>Подподгруппа1Подгруппы1группы2</li>
-----<li>Подподгруппа2Подгруппы1группы2</li>
-----<li>Подподгруппа3Подгруппы1группы2</li>
-----</ul>
--<li>Подгруппа2группы2</li>
--<li>Подгруппа3группы2</li>
--</ul>
<li>Группа3</li>
<li>Группа4</li>
</ul>


ПЕРЕДЕЛАТЬ В
<ul>
<li>Группа1</li>
<li>Группа2</li>
<li>Группа3</li>
<li>Группа4</li>
</ul>

<ul>
<li>Подгруппа1группы2</li>
<li>Подгруппа2группы2</li>
<li>Подгруппа3группы2</li>
</ul>

<ul>
<li>Подподгруппа1Подгруппы1группы2</li>
<li>Подподгруппа2Подгруппы1группы2</li>
<li>Подподгруппа3Подгруппы1группы2</li>
</ul>





Первый уровень каталога интернет магазина:

Группа1
Группа2
Группа3
Группа4

при клике на Группа1, выводим старого меню второй уровень каталога

Группа1
Группа2
Группа3
Группа4
--------
Подгруппа1группы1
Подгруппа2группы1
Подгруппа3группы1
--------
Товары Группы1

а при клике на Группа2, выводим тоже второй уровень каталога, только внутри Группы2

Группа1
Группа2
Группа3
Группа4
--------
Подгруппа1группы2
Подгруппа2группы2
Подгруппа3группы2
--------
Товары Группы2

и соответственно при клике на Подгруппа1группы2, выводим третий уровень каталога

Группа1
Группа2
Группа3
Группа4
--------
Подгруппа1группы2
Подгруппа2группы2
Подгруппа3группы2
--------
Подподгруппа1Подгруппы1группы2
Подподгруппа2Подгруппы1группы2
Подподгруппа3Подгруппы1группы2
--------
Товары Подгруппа1группы2

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

<!-- Шаблон для групп товара -->
   <xsl:template match="group">
      <xsl:variable name="parent_id" select="@parent"/>
      
      <div style="margin-bottom: 15px;">
         <a href="{/shop/path}{fullpath}" style="font-weight: bold">
            <xsl:value-of disable-output-escaping="yes" select="name"/>
      </a>&#xA0;<span style="color: #aaaaaa">(<xsl:value-of select="count_all_items"/>)</span>
         <br/>
         <xsl:value-of disable-output-escaping="yes" select="description"/>
         
         <xsl:if test="count(group) &gt; 1">
            <xsl:apply-templates select="group" mode="sub_group"/>
         </xsl:if>
      </div>
      
      <xsl:if test="position()= round(count(//group[@parent = $parent_id]) div 2)">
         <xsl:text disable-output-escaping="yes">
            &lt;/td&gt;
            &lt;td valign="top" width="50%"&gt;
         </xsl:text>
      </xsl:if>
   </xsl:template>
   
   <!-- Шаблон для подразделов -->
   <xsl:template match="group" mode="sub_group">
      <a href="{/shop/path}{fullpath}">
         <xsl:value-of disable-output-escaping="yes" select="name"/>
      </a>
      
      <xsl:variable name="parent_id" select="@parent"/>
      <!-- Ставим запятую после группы, за которой следуют еще группы из данной родителской группы -->
      <xsl:if test="position() != last() and count(//group[@parent = $parent_id]) &gt; 1">,&#xA0;</xsl:if>
   </xsl:template>
#
Re: не стандартный вывод подкатегорий интернет магазина в виде многоуровнего меню
неужто здесь нет ни одного гуру, кто справится?
неожиданно
Модератор
#
Re: не стандартный вывод подкатегорий интернет магазина в виде многоуровнего меню
wbrz, чем Вас не устроили ответы поддержки?! или Вы хотите полного выполнения интеграции в рамках поддержки.
Гуру берут оплату за свое время.
#
Re: не стандартный вывод подкатегорий интернет магазина в виде многоуровнего меню
Да возможно я прошу слишком многого...
Думал кто-нибудь не из тех поддержки уже реализовывал подобное.
Можно удалить тему.
Либо могу выложить код предоставленный тех поддержкой, если кому понадобится.
Если тех поддержка конечно же не возражает?
Модератор
#
Re: не стандартный вывод подкатегорий интернет магазина в виде многоуровнего меню
поддержка конечно не возражает.
#
Re: не стандартный вывод подкатегорий интернет магазина в виде многоуровнего меню
данный xslt шаблон выводит все дерево каталогов интернет магазина в виде меню, описанной выше последовательностью.
Осталось только добавить проверку на родительские и дочерние элементы.
Чтобы выводить меню от корня и до той ветки где мы в данный момент находимся плюс ее подкатегории.

<?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">

<h2><a href="{path}" title="Интернет-магазин">Интернет-магазин</a></h2>

<ul class="left_menu" id="shop_menu">
<xsl:apply-templates select="group"/>
</ul>

<xsl:for-each select="group">
<xsl:if test="count(group)">
<ul>
<xsl:apply-templates select="group"/>
</ul>
</xsl:if>
</xsl:for-each>

<xsl:for-each select="group/group">
<xsl:if test="count(group)">
<ul>
<xsl:apply-templates select="group"/>
</ul>
</xsl:if>
</xsl:for-each>
</xsl:template>

<!-- Шаблон для групп товара -->
<xsl:template match="group">
<li>
<a href="{/shop/path}{fullpath}">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
</li>
</xsl:template>
</xsl:stylesheet>


Попробовал сделать это сам.
Получился только такой НЕ рабочий вариант, с не корректной работой:

<?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">
      <!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
      <xsl:variable name="parent_group_id" select="@current_group_id"/>
      <xsl:variable name="tgr" select="//ТекущаяГруппа"/>
      
        <h2><a href="{path}" title="Интернет-магазин">Интернет-магазин</a></h2>

            <ul class="left_menu" id="shop_menu">
                        <xsl:apply-templates select="group[@parent=0]"/>
                </ul>
            <!--<xsl:for-each select="//group/group">-->
               <ul class="left_menu2" id="shop_menu">
                     <xsl:apply-templates select="group/group[@parent=/shop/group[@parent=$tgr]/@id]"/>
               </ul>
            <!--</xsl:for-each>-->
            
            <ul class="left_menu3" id="shop_menu">
                        <xsl:apply-templates select="group/group/group[@parent=/shop/group/group/@id]"/>
                </ul>
            
      <!--
                <ul class="left_menu" id="shop_menu">
                        <xsl:apply-templates select="group[@parent=$parent_group_id]"/>
                </ul>

                <xsl:for-each select="/group/group[@id=$tgr]">  
                        <xsl:if test="count(selected_tags/tag) = 0 and count(//group[@parent=$parent_group_id]) &gt; 0 and //group/@parent=$tgr">
                                <ul class="2">
                                        <xsl:apply-templates select="group"/>
                                </ul>
                        </xsl:if>
                </xsl:for-each>
-->
        </xsl:template>

        <!-- Шаблон для групп товара -->
        <xsl:template match="group">
      <xsl:variable name="tgr" select="//ТекущаяГруппа"/>
                <li>
                        <a href="{/shop/path}{fullpath}">
                                <xsl:value-of disable-output-escaping="yes" select="name"/>
                        </a>
                </li>
        </xsl:template>
</xsl:stylesheet>


Если кто-либо еще сможет помочь, буду премного благодарен.
Авторизация