在xslt中构建单独的1级和2级菜单

时间:2011-11-01 21:14:41

标签: xslt sitecore

我正在尝试通过xslt在Sitecore 6中创建一个简单的菜单。

目前有一个1级导航,显示网站第一级的所有菜单项。这很好用。然后我有一个2级菜单,显示我当前(或父级)1级项目的所有子项目。

我将它作为2个单独的检查,因此它们没有相互链接(由于网站上的样式,1级菜单项显示在一个地方,2级项目显示在另一个地方)。

我目前正在使用它进行2级检查;

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

但当然这只有效,当我实际上在1级项目时 - 当我向下移动到2级项目时,它不再有效。

有什么想法吗?它应该非常简单,但我遗漏了一些明显的东西。

2 个答案:

答案 0 :(得分:0)

我认为你的错是你使用$ sc_currentitem。 您可以创建变量或使用existsin变量作为您的主项目,并循环显示您的菜单

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

比你可以将$ sc_currentitem ID与迭代项目ID进行比较,通过使用a知道当前访问了哪一个,并使用类似<xsl:for-each select="./item[sc:fld('In global menu',.) = '1']">

的内容迭代这个ID

我希望这有帮助。

致以最诚挚的问候,

来自netz​​kern Sitecore Trainingcenter德国的菲尔

答案 1 :(得分:0)

网站的所有“部分”是否都基于相同的数据模板?如果是这样,你可以使用这样的东西(未经测试):

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

从这里你可以使用$ section / item来获取所有二级导航项。