Umbracoにコンテンツツリーがあり、3つのメインページとそのサブページがあります。ホームページの子である他の5つのページもあり、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>
これは、ホームページ以外のページでのみ機能します。したがって、xsltselectをさらにパーソナライズする必要があります。それ、どうやったら出来るの?これが私が試したものです。他の選択で条件を追加する方法がわからないため、テンプレートに追加しました。
<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>
問題は、子供がいないページに行っても、子供がいないページでもホームページのアイテムが表示されることです。これらの2つのパラメーター(showNaviとisHomePageChild)がtrueに設定されているページのみを表示するようにselectをパーソナライズするにはどうすればよいですか?ご協力いただきありがとうございます。あなたが問題を理解したことを望みます。