gpt4 book ai didi

xslt - Umbraco XSLT。动态菜单

转载 作者:行者123 更新时间:2023-12-01 17:58:39 24 4
gpt4 key购买 nike

我的 Umbraco 项目具有以下结构:

Content
-Home
--Contacts
--Offices
-About

主页有“/”地址,并且是索引页。有人可以告诉我如何通过 XSLT 将 Home 和 About 元素放入菜单中吗?目前,我只能按当前页面的级别(即主页)获取子节点,因此我只能获取联系人和办公室。我不能通过 documentType 来获取它们,因为我想要一个动态的,而不是硬编码的。有没有办法让主页和关于不断显示在菜单中?我对 XSLT 完全陌生,也是 Umbraco 的第二天。

编辑:这是 XML 的一部分,位于

<xsl:param name="currentPage"/>

<!-- Input the documenttype you want here -->
<xsl:variable name="level" select="1"/>

<xsl:template match="/">

<!-- The fun starts here -->
<ul>
<xsl:for-each select="$currentPage/ancestor-or-self::* [@level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']">
<xsl:if test="$currentPage/@id = @id">
<li class="selected">
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName"/>
</a>
</li>
</xsl:if>
<xsl:if test="$currentPage/@id != @id">
<li>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName"/>
</a>
</li>
</xsl:if>
<xsl:value-of select="$currentPage/id"/>
</xsl:for-each>
</ul>

</xsl:template>

编辑2:通过取消级别平等,我得到了“ self ”,即“家”,但仍然没有“关于”。也许您知道如何查找有关“X-Path”选择器的信息,例如“ancestor-or-self::*”?

最佳答案

我终于找到答案了。通过项目根元素访问所有元素的方法是使用“$currentPage/ancestor::root//*”。这就是我的标记现在的样子,在 John 的帮助下,简化了“if”语句。

<!-- Input the documenttype you want here -->
<xsl:variable name="level" select="1"/>

<xsl:template match="/">

<!-- The fun starts here -->
<ul>
<xsl:for-each select="$currentPage/ancestor::root//* [@level = $level and name() != 'Home' and @isDoc and string(umbracoNaviHide) != '1']">
<li>
<xsl:if test="$currentPage/@id = @id">
<xsl:attribute name="class">selected</xsl:attribute>
</xsl:if>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName"/>
</a>
</li>
<xsl:value-of select="$currentPage/id"/>
</xsl:for-each>
</ul>

在退出时,我得到了除“Home”之外的“内容”的所有元素(我只是不只是在菜单中需要它)。

关于xslt - Umbraco XSLT。动态菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19839480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com