如何解决我正在尝试通过Sitecore模板而不是项目进行循环
|| 好的,这是我的xslt,用于遍历主页项的各项,但是我希望能够遍历模板...这样做的原因是,我的xslt可以更具体,而不是显示家居用品<xsl:template match=\"*\" mode=\"main\">
<div id=\"aside\">
<ul id=\"nav\">
<xsl:for-each select=\"$home/descendant-or-self::item[position() <= 6]\">
<li>
<sc:link>
<sc:text field=\"Title\"></sc:text>
</sc:link>
</li>
</xsl:for-each>
</ul>
<div class=\"advertisement\">
<sc:image field=\"Image\"></sc:image>
</div>
</div>
</xsl:template>
解决方法
从您的xslt看来,您正在谈论导航。与其遍历不同的模板,我将创建一个仅包含一个名为ShowInNavigation的字段的特定导航模板。
然后,所有其他模板将继承此模板,并且导航xslt将变得更简单
<xsl:template match=\"*\" mode=\"main\">
<div id=\"aside\">
<ul id=\"nav\">
<xsl:for-each select=\"$home/descendant-or-self::item[sc:fld(\'ShowInNavigation\') = \'1\']\">
<li>
<sc:link>
<sc:text field=\"Title\"></sc:text>
</sc:link>
</li>
</xsl:for-each>
</ul>
<div class=\"advertisement\">
<sc:image field=\"Image\"></sc:image>
</div>
</div>
</xsl:template>
另外,请勿在导航中使用“后代或自身::”项目,因为随着站点的增长,导航将成为您的瓶颈。
最好使用$ home / item [sc:fld(\'ShowInNavigation \')= \'1 \'],然后对上面的home节点进行硬编码。因此,xslt将变为:
<xsl:template match=\"*\" mode=\"main\">
<div id=\"aside\">
<ul id=\"nav\">
<li>
<sc:link select=\"$home\">
<sc:text field=\"Title\"></sc:text>
</sc:link>
</li>
<xsl:for-each select=\"$home/item[sc:fld(\'ShowInNavigation\') = \'1\']\">
<li>
<sc:link>
<sc:text field=\"Title\"></sc:text>
</sc:link>
</li>
</xsl:for-each>
</ul>
<div class=\"advertisement\">
<sc:image field=\"Image\"></sc:image>
</div>
</div>
</xsl:template>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。