我在 Umbraco 有一个内容树,其中有 3 个主页面及其子页面。我还有 5 个其他页面是 Homepage 的子页面,它们设置了 2 个选项:umbIsChildOfHomePage = 1 和 umbracoNaviHide = 1 看看结构:
现在:我想为每个页面生成一个 umb2ndLevelNavigation。
我的 xslt 文件中有这个
<xsl:variable name="items" select="$currentPage/ancestor-or-self::* [@isDoc and @level = 2]/* [@isDoc and string(umbracoNaviHide) != '1']"/>
<xsl:if test="count($items) > 0">
<ul>
<xsl:for-each select="$items">
<li>
<xsl:if test="position() = last()">
<xsl:attribute name="class">last</xsl:attribute>
</xsl:if>
<xsl:if test="position() = 1">
<xsl:attribute name="class">first</xsl:attribute>
</xsl:if>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName"/>
</a>
</li>
</xsl:for-each>
</ul>
</xsl:if>
这仅适用于主页以外的页面。所以需要额外个性化 xslt 选择。我怎么做?这是我尝试过的。我将它附加到模板中,因为我不知道如何在其他选择中附加条件。
<xsl:variable name="itemsHomepage" select="$currentPage/ancestor-or-self::* [@isDoc and @level = 1]/* [@isDoc and string(umbracoNaviHide) = '1' and string(umbIsChildOfHomePage) = 1]"/>
<xsl:if test="count($itemsHomepage) > 0">
<ul>
<!--<xsl:attribute name="class">
a<xsl:value-of select="$currentPage/parent::*[@isDoc]/@id [string(umbIsChildOfHomePage) = 1 ]" />
</xsl:attribute>-->
<xsl:for-each select="$itemsHomepage">
<li>
<xsl:if test="position() = last()">
<xsl:attribute name="class">last</xsl:attribute>
</xsl:if>
<xsl:if test="position() = 1">
<xsl:attribute name="class">first</xsl:attribute>
</xsl:if>
<xsl:choose>
<xsl:when test="name() = 'Link'">
<a href="{current()/linkUrl}" target="_blank">
<xsl:value-of select="@nodeName" />
</a>
</xsl:when>
<xsl:otherwise>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName" />
</a>
</xsl:otherwise>
</xsl:choose>
</li>
</xsl:for-each>
<!--<li>
s:<xsl:value-of select="$currentPage/@id" />
<xsl:value-of select="$RootNode/@nodeName"/>-<xsl:value-of select="$RootNode/@id"/>
</li>-->
</ul>
</xsl:if>
问题是,即使我转到没有子项的页面,即使对于没有子项的页面,也会显示主页。如何个性化选择以仅在将这两个参数(showNavi 和 isHomePageChild)设置为 true 的页面时显示?谢谢你的帮助。希望你理解这个问题。