Создание отдельных меню уровня 1 и 2 в xslt - PullRequest
0 голосов
/ 02 ноября 2011

Я пытаюсь создать простое меню в Sitecore с 6 по xslt.

В настоящее время существует навигация уровня 1, которая отображает все пункты меню на первом уровне сайта.Это отлично работает.Затем у меня есть меню уровня 2, которое показывает все подпункты текущего (или родительского) элемента уровня 1, на котором я нахожусь.

У меня есть 2 отдельные проверки, поэтому они не связаныдруг другу (из-за стиля на сайте элементы меню уровня 1 отображаются в одном месте, а элементы уровня 2 - в другом месте).

В настоящее время я использую это для проверки уровня 2;

<xsl:for-each select="$sc_currentitem/item[sc:fld('In global menu',.) = '1']">

Но, конечно, это работает, только когда я нахожусь на предмете уровня 1 - когда я опускаюсь до предмета уровня 2, он больше не работает.

Есть идеи?Это должно быть чертовски просто, но я упускаю что-то очевидное.

Ответы [ 2 ]

0 голосов
/ 05 ноября 2011

Все ли разделы сайта основаны на одном шаблоне данных? Если это так, вы можете использовать что-то вроде этого (не проверено):

<xsl:variable name="section" select="'$sc_currentitem/ancestor-or-self::item[@template='templatename']'"/>

Отсюда вы можете использовать $ section / item, чтобы получить все элементы навигации второго уровня.

0 голосов
/ 04 ноября 2011

Я думаю, что вы виноваты в том, что вы используете $ sc_currentitem.Вы можете создать переменную или использовать переменную existin для своего домашнего элемента и повторить ее, чтобы показать вашему меню

что-то вроде этого <xsl:for-each select="$home/item[sc:fld('In global menu',.) = '1']">

, чем вы можете сравнить идентификатор $ sc_currentitem сповторяйте идентификаторы предметов, используя a, чтобы узнать, какой из них посещается в данный момент, и переберите этот элемент примерно так: <xsl:for-each select="./item[sc:fld('In global menu',.) = '1']">

Надеюсь, это поможет.

С уважением,

Фил из netzkern Sitecore Trainingcenter Германия

...