在umbraco的新闻文章中的下一个上一个导航

时间:2011-02-04 15:29:15

标签: xslt xpath navigation umbraco

这让我有点疯狂(一直试图这么做)

我正在尝试使用一些xpath代码来显示下一个和上一个链接,它会带你到下一个newsItem,一旦它到达newsItem4,那么下一个按钮就会消失。

<newsArea>
  <newsItem1></newsItem1>   <----- currentPage
  <newsItem2></newsItem2>
  <newsItem3></newsItem3>
  <newsItem4></newsItem4>
</newsArea>

我可以在带有

的新闻项目中列出newsItems
  <xsl:for-each select="$currentPage/../*">
   <h2><xsl:value-of select="@nodeName"/></h2>
  </xsl:for-each>

我可以计算我有多少项

<xsl:value-of select="count($currentPage/../*)-1"/>

但是我不知道如何转到下一个新闻项目,或者如何告诉它什么时候停止显示下一个节点,当它涉及到newsItems的结尾时(一个例子只是简化到另一个级别)

真的很感激任何帮助。

由于

2 个答案:

答案 0 :(得分:1)

请查看此博客文章中的分页示例:http://www.nibble.be/?p=11

这应该让你知道它是如何工作的。您始终可以将页面大小设置为1。

此外,还有一个基于该方法的包:http://our.umbraco.org/projects/developer-tools/paging-xslt

这应该让你走上正确的道路。

答案 1 :(得分:0)

您可以轻松创建一个“页面导航”宏来添加到您想要的任何模板的底部,XSLT将如下所示:

<xsl:template match="/">
  <!-- if there's a previous page -->
  <xsl:if test="$currentPage/preceding-sibling::*[1]">
    <a href="{umbraco.library:NiceUrl($currentPage/preceding-sibling::*[1]/@id)}">&lt; Prev</a>
  </xsl:if>
  <!-- if there's next and previous, show divider -->
  <xsl:if test="$currentPage/preceding-sibling::*[1] and $currentPage/following-sibling::*[1]">
    <xsl:text> | </xsl:text>
  </xsl:if>
  <!-- if there's a next page -->
  <xsl:if test="$currentPage/following-sibling::*[1]">
    <a href="{umbraco.library:NiceUrl($currentPage/following-sibling::*[1]/@id)}">Next &gt;</a>
  </xsl:if>
</xsl:template>