Древовидное меню для информационных систем

#
Древовидное меню для информационных систем
Задача ставится следующая: организовать древовидное меню, в котором будут как разделы сайта (которые в "структура сайта" задаются), так и информационные системы.

О компании
Ифосистема 1
- подрубрика 1.1
- подрубрика 1.2
- - подрубрика 1.2.1
- - подрубрика 1.2.2
Ифосистема 2
- подрубрика 2.1
- - подрубрика 2.1.1
- - подрубрика 2.1.2
- подрубрика 2.2
Контакты
Статьи

Соответственно при переходе на любой уровень меню должны показываться все родительские пункты и дочерние к текущему.
У меня всё работает, но только не показываются дочерние рубрики к информационным системам.

Вызов ЛевоеМеню делается в шаблоне так:

      <!-- Левое меню -->
      <?php
      $Structure = & singleton('Structure');
      $Structure->ShowStructure(2, 'ЛевоеМеню');
      ?>

ЛевоеМеню.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"/>
   
   <!-- ЛевоеМеню -->
   
   <xsl:template match="/document">
      <ul id="menu">
         <!-- Выбираем узлы структуры первого уровня -->
         <xsl:apply-templates select="structure[show=1]"/>
      </ul>
   </xsl:template>
   
   <xsl:template match="structure">
      
      <!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
      <xsl:variable name="current_structure_id" select="/document/structure/current_structure_id"/>
      <li>
         <!-- Выделяем текущую страницу добавлением к <li> класса active, если это текущая страница, либо у нее есть ребенок с атрибутом id, равным текущей uheggt. -->
            <xsl:if test="current_structure_id = @id or count(.//structure[@id=$current_structure_id]) = 1">
               <xsl:attribute name="class">active</xsl:attribute>
            </xsl:if>
            
            <!-- Показывать ссылку, или нет -->
            <xsl:choose>
               <xsl:when 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:when>
               <!-- Иначе вывод без ссылки -->
               <xsl:otherwise>
                  <xsl:value-of disable-output-escaping="yes" select="name"/>
               </xsl:otherwise>
            </xsl:choose>
         </li>
         
         <!-- Выбираем подузлы структуры -->
         <xsl:if test="current_structure_id=@id or count(.//structure[@id=$current_structure_id])=1">
            <ul>
               <xsl:if test="count(structure[show=1]) > 0">
                  <!-- Выбираем узлы структуры -->
                  <xsl:apply-templates select="structure"/>
               </xsl:if>
            </ul>
         </xsl:if>

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


Жирным я выделил то что должно выводить дочерние рубрики, но оно работает только на структуру сайта, а подрубрики инфосистем не выводит.

Что я не учёл или сделал не так? Помогите пожалуйста кто знает?
www.btb.su
#
Re: Древовидное меню для информационных систем
Для начала вам нужно будет передать параметр $param['show_groups'] со значением true в метод ShowStructure. Иначе XML-код вообще не будет содержать информацию о группах. Пример кодов реализации такого меню см. в теме: http://www.hostcms.ru/forums/17/1875/
#
Re: Древовидное меню для информационных систем
Ещё заметил косяк, что третий уровень меню выводится всегда в текущем втором уровне. Вот так:
О компании
Ифосистема 1
подрубрика 1.1 (текущая)
— — подрубрика 1.2.1
— — подрубрика 1.2.2

— подрубрика 1.2
Ифосистема 2
Контакты
Статьи
www.btb.su
Авторизация