Вывод в меню структуры второго уровня.

#
Вывод в меню структуры второго уровня.
Помогите пожалуйста, что-то я сам не пойму.

Вот так мы выбираем узел структуры первого уровня.
   <xsl:template match="/site">
      <ul class="sf-menu">
         <!-- Выбираем узлы структуры первого уровня -->
         <xsl:apply-templates select="structure[show=1]" />
       </ul>
   </xsl:template>



А как выбрать узел структуры второго? Например все вложенные подузлы для узла ID=113?

Смысл в том что у меня двуязычный сайт. На Английском языке путь к новостям /en/news на Русском /news. Хочу сделать меню отдельно для этих языков, но ничего не получается, решения видел только для 5 версии, а у меня 6.
Модератор
#
Re: Вывод в меню структуры второго уровня.
в контроллере передаете ID родительского узла через метод ->parentId():
$Structure_Controller_Show
   ->xsl(
      Core_Entity::factory('Xsl')->getByName('Меню')
   )
   ->parentId(113)
   ->show();
#
Re: Вывод в меню структуры второго уровня.
Благодарствую. Сработало.
Модератор
#
Re: Вывод в меню структуры второго уровня.
Пожалуйста. Также смотрите раздел "Контроллеры в клиентском разделе".
#
Re: Вывод в меню структуры второго уровня.
Сделал выпадающее меню (подменю), т.е. двухуровневое меню для верхнего. Предварительно, в структуре сайта создал раздел с подразделами и поставил разделам галочку "отобразить в меню" (чтобы атрибут show был равен 1).

Далее изменил XSL шаблон "Верхнее меню", а именно, в элементе <xsl:template match="structure">, в конце, перед закрывающим тэгом li вставил следующий код:  
<ul><xsl:apply-templates select="structure" mode="sub" /></ul>

Осталось прописать стиль
   <xsl:template match="structure" mode="sub">
      <li>
         <a href="{link}" title="{name}" hostcms:id="{@id}" hostcms:field="name" hostcms:entity="structure">
            <xsl:value-of disable-output-escaping="yes" select="name"/>
         </a>
      </li>
   </xsl:template>


В результате получим HTML вывод:
   ul ->   li ->   a
         ul ->    li -> a
            li -> a
            li -> a
            ...
      li ->   a
      li ->   a
      li ->   a
         ul ->    li -> a
            li -> a
            li -> a
            ...
      li -> a
      li -> a
      ...


к которому можно применить CSS+js для стилизации.

Работает, выводит подменю для всех разделов имеющих подразделы.
Сайт еще в разработке, когда будет готов могу дать ссылку.
Веб-технолог по клиентской части
#
Re: Вывод в меню структуры второго уровня.
iulyus писал(а):
Сделал выпадающее меню (подменю)

тоже сумел таки, после долгих мучений реализовать такое. Только у меня проблема: как сделать так, чтобы верхний раздел, у которого есть подразделы, сам не был ссылкой? Не поможете разобраться?
Модератор
#
Re: Вывод в меню структуры второго уровня.
raisckiy, делать проверку на наличие подузлов, если есть - просто выводить текст, иначе в <a>
#
Re: Re: Вывод в меню структуры второго уровня.
<xsl:when test="count(structure[show=1]) > 0">
<xsl:value-of disable-output-escaping="yes" select="name"/>
<xsl:otherwise>
<a href="{$link}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>
</xsl:otherwise>

Вот попробовал сам додуматься, я учусь, буду очень благодарен, если поправите
Модератор
#
Re: Вывод в меню структуры второго уровня.
Вроде ОК, не работает?
#
Re: Вывод в меню структуры второго уровня.
Еще бы знать куда вставить это?
Авторизация