Не могу реализовать меню с тремя вложениями

#
Не могу реализовать меню с тремя вложениями
Необходимо выводить меню такой структуры

1. Заголовки меню (верхняя часть сайта).
    2. Подменю (в левой части сайта)
        3. Ссылки третьего уровня меню (в основном шаблоне сайта)

Не могу реализовать зависимость в таком порядке.
Чтобы при нажатии на "1. Заголовки меню" выподало "2. Подменю" в левой части страницы, и нажатии на ссылку левом меню (если есть подменю 3-го уровня) в основном шаблоне я получал подссылки 3-го уровня.

Пробывал это сделать на CURRENT_STRUCTURE_ID  не получается, поскольку както нужно знать родителя меню выше уровнем.  прочитал всю документацию, ничего не нашел по этому вопросу.
Модератор
#
Re: Не могу реализовать меню с тремя вложениями
RIV,
покажите как Вы это пытались организовать.

RIV писал(а):
както нужно знать родителя меню выше уровнем

имея родителя текущего уовня Вы можете вызвать метод и получить данные об этом родителе, в том числе его родителя, и так до тех пор, пока родитель не станет равным 0.

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

верхнее меню
<?
$structure = new Structure();
$structure->ShowStructure(1,'ВерхнееМеню');
?>

левое меню,
<?
$structure->ShowStructure(1,'ЛевоеМеню');
?>

сам темплейт:
<?$kernel->show_current_template()?>

шаблонов XSL как таковых рабочих у меня нет.
сделано только тестовое меню, с тремя степенями вложенности. (для теста)
с шаблонами эксперементировал только

левое меню. (получает только текущий id)
<xsl:template match="/document">
     <xsl:variable name="current_structure_id" select="/document/structure/current_structure_id"/>
     <xsl:apply-templates select=".//structure[id_parent=$current_structure_id and show=1]"/>
</xsl:template>





#
Re: Не могу реализовать меню с тремя вложениями
XSL шаблон левого меню, ссылки 2 уровня выводятся нормально, при нажатии на них выводится лишний level=1 из другово подменю - бился - добится не смог..


<xsl:template match="/document">
<!-- Выбираем все корневые (у которых level равен 1) и которые показывать -->
<xsl:apply-templates select=".//structure[level=1 and show=1]"/>


</xsl:template>

<xsl:template match="structure">

<!-- начало тестинга) -->


<xsl:if test="current_structure_id=id_parent">
   <!-- Если внешняя ссылка - ставим внешнюю -->
   <xsl:if test="is_external_link=1">
        <a href="{external_link}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
        <!-- Выделяем текущую страницу жирным (если это текущая страница, либо у нее есть ребенок с ID, равным текущей) -->

   <xsl:if test="propertys/property[@name='font_bold']/value='Да'">
   <a href="{external_link}"><b><xsl:value-of disable-output-escaping="yes" select="name"/></b></a>
        </xsl:if>

   <xsl:if test="propertys/property[@name='font_bold']/value='Нет'">
   <a href="{external_link}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
   </xsl:if>

         
   </xsl:if>

      <!-- Если внутренняя ссылка -->
      <xsl:if test="is_external_link=0">
                <!-- Выделяем текущую страницу жирным (если это текущая страница, либо у нее есть ребенок с ID, равным текущей) -->

      <xsl:if test="propertys/property[@name='font_bold']/value='Да'">
      <a href="{link}"><b><xsl:value-of disable-output-escaping="yes" select="name"/></b></a>
      </xsl:if>
      
                <xsl:if test="propertys/property[@name='font_bold']/value='Нет'">
      <a href="{link}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
      </xsl:if>
         
      </xsl:if>


</xsl:if>



<!-- если 1 меню = его же номеру (не работает) -->
<xsl:if test="id_parent=id_parent">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</xsl:if>
<!-- если 1 меню = его же номеру (не работает) -->

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


</xsl:template>
Модератор
#
Re: Не могу реализовать меню с тремя вложениями
ответ дан в соседней теме
Авторизация