簡體   English   中英

Umbraco XSLT計數過濾的頁面

[英]Umbraco xslt count filtered pages

需要一些幫助。 在umbraco,我有這樣的樹

-First
  - page 1
  - page 2
  - page 3
  - page 4
  - page 5
  - page 6
  - page 7
  - page 8
  - page 9
  - page 10
  - page 11
  - page 12...

循環所有頁面我過濾它們。 所以我只將xslt應用於第4,7,10頁position()會給我4,7,10如何計算我瀏覽的頁面數? (在此示例3中)這是我的xslt:

<xsl:param name="currentPage"/>
<xsl:variable name="root" select="$currentPage/ancestor-or-self::* [@isDoc][last()]"/>
<xsl:variable name="articles" select="$root/descendant-or-self::* [@isDoc][@level=2]"/>
<xsl:template match="/">
  <xsl:for-each select="$articles">
    <xsl:if test="./* [@isDoc and string(umbracoNaviHide)!='1' and local-name(current())='myfilteredpage']">
       ...some html construction...
    </xsl:if>
  </xsl:for-each>
</xsl:template>

謝謝您的幫助。 本傑明

PS:找到那些有助於我建立分頁的鏈接,但我的櫃台無法解決

第一個鏈接

第二個鏈接

您可以像這樣計算遍歷的頁面總數:

count($articles/* [@isDoc and string(umbracoNaviHide)!='1' and local-name(current())='myfilteredpage'])

如果您希望循環中具有當前的“計數”,則應按以下方式更改xsl:

<xsl:param name="currentPage"/>
<xsl:variable name="root" select="$currentPage/ancestor-or-self::* [@isDoc][last()]"/>
<xsl:variable name="articles" select="$root/descendant-or-self::* [@isDoc][@level=2]"/>
<xsl:template match="/">
  <xsl:variable name="articlesToLoop" select="$articles//* [@isDoc and string(umbracoNaviHide)!='1' and local-name(current())='myfilteredpage']" />
  <xsl:for-each select="$articlesToLoop">
    Current count: <xsl:value-of select="position()" /> 
    - <xsl:value-of select="@nodeName" />
  </xsl:for-each>
</xsl:template>

我嘗試了您提供的計數器...當計數器需要顯示2時,計數器顯示0。我發現xsl的另一種行為不清楚。 只有當我的頁面(至少有1個孩子)發布時,它才會顯示該頁面。 這是我的xslt代碼

<xsl:param name="currentPage"/>
<xsl:variable name="root" select="$currentPage/ancestor-or-self::* [@isDoc][last()]"/>
<xsl:variable name="articles" select="$root/descendant::* [@isDoc][@level=2]"/>
<xsl:variable name="NumberOfCharactersToShow" select="number(400)"/>

<xsl:template match="/">
<!-- start writing XSLT -->
<xsl:variable name="counter" select="count($articles//* [@isDoc and string(umbracoNaviHide)!='1' and local-name(current())='Article'])" />
<xsl:value-of select="$counter" />
<xsl:for-each select="$articles">
    <xsl:variable name="article" select="* [@isDoc and string(umbracoNaviHide)!='1' and local-name(current())='Article']" />
    <xsl:if test="$article">
        <xsl:call-template name="article" />
        <!--<xsl:for-each select="current()/descendant::* [@isDoc]">
            <xsl:call-template name="article" />
        </xsl:for-each>-->
    </xsl:if>
</xsl:for-each>

</xsl:template>

<xsl:template name="article">
<xsl:variable name="text" select="umbraco.library:StripHtml(umbraco.library:TruncateString(bodyText,$NumberOfCharactersToShow,'...'))"/>
<!--article-->
<div class="article border border-radius border-shadow">
    <div class="atitle">
        <p><xsl:value-of select="title" /></p>
    </div>
    <div class="atext">
        <p><xsl:value-of select="$text" /></p>
    </div>
</div>
</xsl:template>

嘗試解釋一下。 這是我的示例樹

-first page
  -page
  -article1 (published)
    -article2 (unpublished)
    -article3 (unpublished)
  -page
  -page
  -page
  -article4 (published)
  -page
  -article5 (published)
    -article6 (published)
    -article7 (unpublished)
  -page...

實際上我的代碼只會創建article5(子項(article6,7)的創建在xslt注釋中),但是正如您所看到的,未創建article1和article4……我不明白為什么……

謝謝你的幫助。 本傑明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM