Вывод в левое меню страниц 3 уровня

#
Вывод в левое меню страниц 3 уровня
Есть сайт в верхнем меню выводятся страницы 2 уровня вида site.ru/kategoriy
в левом меню пытаюсь вывести страницы 3 уровня site.ru/kategoriy/page
бьюсь с этим кодом
как правильно организовать выбрать узлы структуры ниже первого уровня и вывести в меню
<?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 class="left_menu gray_link">
         <!-- Выбираем узлы структуры первого уровня -->
         <xsl:apply-templates select="structure[show=1]"/>
      </ul>
      
      <!-- Если вывод подменю -->
      <xsl:if test="submenu/node() and count(structure[show=1]) > 0">
         <hr />
      </xsl:if>
      
   </xsl:template>
   
   <xsl:template match="structure">
      
      <!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
      <xsl:variable name="current_structure_id" select="/document/structure/current_structure_id"/>
      <li>
         <!-- Показывать ссылку, или нет -->
         <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}">
                  <!--
                  Выделяем текущую страницу добавлением к <a> стиля font-weight: bold,
                     если это текущая страница, либо у нее есть ребенок с атрибутом id, равным текущей uheggt.
                     -->
                     <xsl:if test="current_structure_id = @id or count(.//structure[@id=$current_structure_id]) = 1">
                        <xsl:attribute name="style">font-weight: bold</xsl:attribute>
                     </xsl:if>
                     <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:template>
   </xsl:stylesheet>
#
Re: Вывод в левое меню страниц 3 уровня
Нужно биться с кодом вывода Левого меню в шаблоне/ макете страниц. А не XLX-шаблоном.
#
Re: Вывод в левое меню страниц 3 уровня
xshock писал(а):
Нужно биться с кодом вывода Левого меню в шаблоне/ макете страниц. А не XLX-шаблоном.

мой код в шаблоне понятно просто берет и выводит левое меню
<?php
$Structure = & singleton('Structure');
$Structure->ShowStructure(2, 'ЛевоеМеню');
?>

Код макета страниц

<!-- Центральный блок -->
   <?php
   // Вывод строки навигации
   $InformationSystem = & singleton('InformationSystem');
   
   // Определяем информацию об информационной системе, связанной с текущим узлом
   $InformationSystem_id = $InformationSystem->GetInformationSystemByStructureId(CURRENT_STRUCTURE_ID);
   
   $param = array();
   $param['xml_show_structure_property'] = false;
   
   $external_propertys = array();
   
   // Если с узлом структуры связана ИС
   if ($InformationSystem_id)
   {
      $result = $InformationSystem->GetInformationFromPath($InformationSystem_id, '', false);
   
      // определяем id информационного элемента
      if ($result['item'])
      {
         $item_id = $InformationSystem->GetIdInformationItem($result['item'], $result['group'], $InformationSystem_id);
   
         if ($item_id != 0)
         {
            $external_propertys['item'] = $item_id;
   
            $param['show_groups'] = array($result['group']);
            $param['show_items'] = array($item_id);
         }
      }
      else
      {
         $item_id = false;
      }
   
      if (is_array($result) && $result['group'] > 0)
      {
         $external_propertys['group'] = $result['group'];
         
         $param['show_groups'] = array($result['group']);
      }
   
      // Данные для хлебных крошек заполняем только для текущей ИС
      $param['show_information_systems'][] = $InformationSystem_id;
   }
   elseif (class_exists('shop'))
   {
      $shop = & singleton('shop');
   
      // Определяем информацию о магазине, связанным с магазином
      $shop_row = $shop->GetShopWhithStructureId(CURRENT_STRUCTURE_ID, CURRENT_SITE);
   
      if ($shop_row)
      {
         $result = $shop->GetItemPath($shop_row['shop_shops_id'], '', false);
   
         // Если товар
         if ($result['item'])
         {
            $item_id = $result['item'];
   
            // Получаем данные о товаре
            $item_row = $shop->GetItem($item_id);
            
            if ($item_row)
            {
               // Если товар является модификация, подставляем в ID товара родительский товар
               if ($item_row['shop_items_catalog_modification_id'] != 0)
               {
                  $item_id = $item_row['shop_items_catalog_modification_id'];
               }
               
               if ($item_id != 0)
               {
                  $external_propertys['item'] = $item_id;
      
                  $param['show_shop_groups'] = array($result['group']);
                  $param['show_shop_items'] = array($item_id);
               }
            }
         }
         else
         {
            $item_id = false;
         }
   
         // Если группа
         if (is_array($result) && $result['group'] > 0)
         {
            $external_propertys['group'] = $result['group'];
            
            $param['show_shop_groups'] = array($result['group']);
         }
      }
   }
   
   $structure = & singleton('Structure');
   $structure->ShowStructure(false, 'ХлебныеКрошки', $param, $external_propertys);
   
   // /Хлебные крошки
   ?>

   <?php
   $kernel->show_current_page();
   ?>

#
Re: Вывод в левое меню страниц 3 уровня
Выводите страницы 3-его уровня? Или элементы ИС?
Передавайте в параметры:

$param['show_groups'] = true;
$param['show_items'] = true;

Подробнее http://hostcms.ru/api/HostCMS_5/Structure.html#methodShowStructure
Авторизация