Отображение в меню подразделов

#
Отображение в меню подразделов
Искал по сайту решение вопроса по отображению в меню подразделов. нашел только вот это:
http://www.hostcms.ru/faq/useful/48/
но, почему то, приведенный в ответе код не работает
как же всё таки заставить отображать подменю в активном разделе??
Модератор
#
Re: Отображение в меню подразделов
Absolut,
покажите суппорту Ваш XML и XSLT-шаблон, поможем.
#
Re: Отображение в меню подразделов
так он вообще то стандартный:
<?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 method="html" indent="yes" encoding="Windows-1251"/>

<xsl:template match="/document">

<table border="0" width="100%" height="200" cellspacing="0" cellpadding="0" style="margin-left:4px; margin-right:4px;">
   <tr>
      <td width="100%" class="menu_line"></td>
   </tr>

   <!-- Выбираем все, у которых level = 0 и show = 1 -->
   <xsl:apply-templates select="structure[level=0 and show=1]"/>
</table>
</xsl:template>

<xsl:template match="structure">

  <tr>
    <td width="100%"><img border="0" src="/images/menu_point.gif" class="menu_point" width="4" height="7" />

   <!-- Показывать ссылку, или нет -->
   <xsl:if test="show_link=1">

          <!-- Если внешняя ссылка - ставим внешнюю -->
          <xsl:if test="is_external_link=1">
            <a href="{external_link}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
          </xsl:if>

   <!-- Если внутренняя ссылка -->
   <xsl:if test="is_external_link=0">
      <a href="{link}">

      <!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
      <xsl:variable name="current_structure_id" select="/document/structure/current_structure_id"/>

      <!-- Выделяем текущую страницу жирным (если это текущая страница, либо у нее есть ребенок с ID, равным текущей) -->
      <xsl:if test="current_structure_id=@id or count(.//structure[@id=$current_structure_id])=1">
         <b><xsl:value-of disable-output-escaping="yes" select="name"/></b>
      </xsl:if>

      <xsl:if test="not(current_structure_id=@id or count(.//structure[@id=$current_structure_id])=1)">
         <xsl:value-of disable-output-escaping="yes" select="name"/>
      </xsl:if>
            </a>
          </xsl:if>

       </xsl:if>

       <xsl:if test="show_link=0">
         <xsl:value-of disable-output-escaping="yes" select="name"/>
       </xsl:if>

</td>
</tr>
<tr>
   <td width="100%" class="menu_line"></td>
</tr>

</xsl:template>

</xsl:stylesheet>

я просто попытался заменить этот код примером-ничего не вышло((
Модератор
#
Re: Отображение в меню подразделов
Absolut,
покажите Ваш XML (добавление /?show_xml=1 в адресную строку), находясь в том разделе, для которого есть подменю и его надо раскрыть.
#
Re: Отображение в меню подразделов
Учиться, учиться и ещё раз учиться ©
вот код, где "тестовая страница" и есть подраздел:
<?xml version="1.0" encoding="Windows-1251"?>
<document>
<structure id="2" menu_id="1">
<current_structure_id>2</current_structure_id>
<name><![CDATA[Саморезы и шурупы]]></name>
<show>1</show>
<show_link>1</show_link>
<level>0</level>
<id_parent>0</id_parent>
<is_external_link>0</is_external_link>
<external_link></external_link>
<link><![CDATA[/screw/]]></link>
<structure id="32" menu_id="1">
<current_structure_id>2</current_structure_id>
<name><![CDATA[Тестовая страница]]></name>
<show>1</show>
<show_link>1</show_link>
<level>1</level>
<id_parent>2</id_parent>
<is_external_link>0</is_external_link>
<external_link></external_link>
<link><![CDATA[/screw/test/]]></link>
<propertys>
<property type="Any" id="68" name="propery1">
<property_name><![CDATA[propery1]]></property_name>
<value><![CDATA[]]></value>
<propery1><![CDATA[]]></propery1>
</property>
<property type="InformationSystemItem" id="70" name="property3">
<property_name><![CDATA[property3]]></property_name>
</property>
</propertys>
</structure>
<propertys>
<property type="Any" id="38" name="propery1">
<property_name><![CDATA[propery1]]></property_name>
<value><![CDATA[]]></value>
<propery1><![CDATA[]]></propery1>
</property>
<property type="InformationSystemItem" id="39" name="property3">
<property_name><![CDATA[property3]]></property_name>
</property>
</propertys>
</structure>
<structure id="5" menu_id="1">
<current_structure_id>2</current_structure_id>
<name><![CDATA[Сетка "рабица"]]></name>
<show>1</show>
<show_link>1</show_link>
<level>0</level>
<id_parent>0</id_parent>
<is_external_link>0</is_external_link>
<external_link></external_link>
<link><![CDATA[/net/]]></link>
<propertys>
<property type="Any" id="42" name="propery1">
<property_name><![CDATA[propery1]]></property_name>
<value><![CDATA[]]></value>
<propery1><![CDATA[]]></propery1>
</property>
<property type="InformationSystemItem" id="44" name="property3">
<property_name><![CDATA[property3]]></property_name>
</property>
</propertys>
</structure>
<structure id="4" menu_id="1">
<current_structure_id>2</current_structure_id>
<name><![CDATA[Гвозди]]></name>
<show>1</show>
<show_link>1</show_link>
<level>0</level>
<id_parent>0</id_parent>
<is_external_link>0</is_external_link>
<external_link></external_link>
<link><![CDATA[/nails/]]></link>
<propertys>
<property type="Any" id="40" name="propery1">
<property_name><![CDATA[propery1]]></property_name>
<value><![CDATA[]]></value>
<propery1><![CDATA[]]></propery1>
</property>
<property type="InformationSystemItem" id="41" name="property3">
<property_name><![CDATA[property3]]></property_name>
</property>
</propertys>
</structure>
<structure id="27" menu_id="1">
<current_structure_id>2</current_structure_id>
<name><![CDATA[Другие метизы]]></name>
<show>1</show>
<show_link>1</show_link>
<level>0</level>
<id_parent>0</id_parent>
<is_external_link>0</is_external_link>
<external_link></external_link>
<link><![CDATA[/other/]]></link>
<propertys>
<property type="Any" id="48" name="propery1">
<property_name><![CDATA[propery1]]></property_name>
<value><![CDATA[]]></value>
<propery1><![CDATA[]]></propery1>
</property>
<property type="InformationSystemItem" id="50" name="property3">
<property_name><![CDATA[property3]]></property_name>
</property>
</propertys>
</structure>
<structure id="22" menu_id="1">
<current_structure_id>2</current_structure_id>
<name><![CDATA[Ошибка 403 - Доступ запрещен]]></name>
<show>0</show>
<show_link>1</show_link>
<level>0</level>
<id_parent>0</id_parent>
<is_external_link>0</is_external_link>
<external_link></external_link>
<link><![CDATA[/403/]]></link>
<propertys>
<property type="Any" id="24" name="propery1">
<property_name><![CDATA[propery1]]></property_name>
<value><![CDATA[]]></value>
<propery1><![CDATA[]]></propery1>
</property>
<property type="InformationSystemItem" id="26" name="property3">
<property_name><![CDATA[property3]]></property_name>
</property>
</propertys>
</structure>
<structure id="10" menu_id="1">
<current_structure_id>2</current_structure_id>
<name><![CDATA[Ошибка 404]]></name>
<show>0</show>
<show_link>1</show_link>
<level>0</level>
<id_parent>0</id_parent>
<is_external_link>0</is_external_link>
<external_link></external_link>
<link><![CDATA[/404/]]></link>
<propertys>
</propertys>
</structure>
</document>
#
Re: Отображение в меню подразделов
Может быть нужна какая то дополнительная информация для ответа на мой вопрос?
или я как то неправильно предоставил то что есть?
Все же очень хотелось бы узнать, как же мне добиться отображения подразделов
#
Re: Отображение в меню подразделов
Ну хоть бы какой ответ получить
Я, конечно, понимаю, что при использовании бесплатной версии поддержка не гарантируется.
Тогда скажите мне:
На этот вопрос отвечать не будем
и я буду придумывать, как мне выкрутиться самому, а так...полная неизвестность
Модератор
#
Re: Отображение в меню подразделов
Absolut,
ответ на Ваш вопрос будет предоставлен.
Модератор
#
Re: Отображение в меню подразделов
Absolut,
Код с выводом подразделов:
<?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 method="html" indent="yes" encoding="Windows-1251"/>

<xsl:template match="/document">

<table border="0" width="100%" height="200" cellspacing="0" cellpadding="0" style="margin-left:4px; margin-right:4px;">
<tr>
  <td width="100%" class="menu_line"></td>
</tr>

<!-- Выбираем все узлы структуры всех уровней вложенности -->
<xsl:apply-templates select="//structure"/>
</table>
</xsl:template>

<xsl:template match="structure">
<tr>
<td width="100%"><img border="0" src="/images/menu_point.gif" class="menu_point" width="4" height="7" />

<!-- Показывать ссылку, или нет -->
<xsl:if 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>

   <!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
   <xsl:variable name="current_structure_id" select="/document/structure/current_structure_id"/>

   <!-- Определяем стиль вывода ссылки -->
   <xsl:variable name="link_style"><xsl:choose>
      <!-- Выделяем текущую страницу жирным (если это текущая страница, либо у нее есть ребенок с ID, равным текущей) -->
      <xsl:when test="current_structure_id=@id or count(.//structure[@id=$current_structure_id])=1">font-weight: bold</xsl:when>
      <!-- Иначе обычный вывод с пустым стилем -->
      <xsl:otherwise></xsl:otherwise>
   </xsl:choose></xsl:variable>

   <!-- Расчитываем размер отступа -->
   <xsl:variable name="padding" select="level * 10"/>

   <div style="padding-left: {$padding}px;">
   <a href="{$link}"><span style="{$link_style}"><xsl:value-of disable-output-escaping="yes" select="name"/></span></a>
   </div>
   
</xsl:if>

<!-- Если не показывать ссылку - выводим просто имя ссылки -->
<xsl:if test="show_link=0">
   <xsl:value-of disable-output-escaping="yes" select="name"/>
</xsl:if>

</td>
</tr>
<tr>
<td width="100%" class="menu_line"></td>
</tr>

</xsl:template>
</xsl:stylesheet>
#
Re: Отображение в меню подразделов
Спасибо Вам огромное!
Всё работает!
Авторизация