1

私の Umbraco プロジェクトの構造は次のとおりです。

Content
-Home
--Contacts
--Offices
-About

ホームには「/」アドレスがあり、インデックス ページです。XSLT を使用して、Both - Home 要素と About 要素をメニューに配置する方法を教えてもらえますか? 現在、ホームである現在のページのレベルごとにサブノードのみを取得できるため、連絡先とオフィスのみを取得します。ハードコーディングされたものではなく動的なものが必要なので、documentType で取得することはできません。メニューに表示するためにホームとアバウトを常に取得する方法はありますか? 私は XSLT をまったく初めて使用し、Umbraco 自体で 2 日目です。

編集:これは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>

Edit2: レベルの平等を取り除くことで、「ホーム」である「セルフ」を取得しましたが、「アバウト」はまだありません。「ancestor-or-self::*」などの「X-Path」セレクターに関する情報を見つける方法を知っているかもしれません。

4

1 に答える 1

4

私はついに答えを見つけました。プロジェクトのルート要素を介してすべての要素にアクセスする方法は、「$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>

出口では、「ホーム」を除く「コンテンツ」のすべての要素を取得しています(メニューで必要なだけではありません)。

于 2013-11-08T08:46:52.857 に答える