限制分页列表上的页数

问题描述 投票:0回答:3

我正在改进网站的分页系统,我遇到了一些我似乎无法解决的简单问题。我试图一次显示页面 (1 2 3 4 5),当用户到达第 5 页时,列表将更改为类似 (4 5 6 7 8) 的内容。我如何使用 cfloop 来做到这一点?这是我的代码示例:

<cfloop from="1" to="#totalPages#" index="i">
<cfoutput><a class="paging" href="?start=#(i*25)-24#">#i#</a></cfoutput> 
</cfloop>

目前它同时显示第 1 - 54 页。有什么建议吗?

pagination coldfusion
3个回答
4
投票

这是我的代码

<cfset curPage = Int(start / 25) + 1>

<cfloop from="1" to="#totalPages#" index="i">
  <cfif i is curPage>
    <div class="page current">#i#</div>
  <cfelse>
    <cfif totalPages lte 5 or i is 1 or i is totalPages or (i gt curPage - 3 and i lt curPage + 3) or ((curPage is 1 or curPage is 2) and i lt 6) >
      <div class="page"><a href="?start=#(i*25)-24#">#i#</a></div>
    <cfelse>
      <cfif i is 2 or i is totalPages - 1>
        <div class="more">...</div>
      </cfif>
    </cfif>
  </cfif>
</cfloop>

此代码的作用是显示前 5 页,然后是省略号,然后是最后一页。当您翻阅它时,它将始终显示第一页和最后一页的链接,以及当前页面之前和之后的 2 页。

屏幕截图:第 1 页 Page 1 和第 10 页 enter image description here

您应该能够轻松修改它以完全按照您想要的方式工作。 (我碰巧不喜欢所有链接都按照您描述的方式立即更改)


2
投票

有一个很棒的开源分页库可以解决您的问题。我无法对它说足够多的好话,因为我写了它。无耻,我知道。无论如何:

http://www.dopefly.com/projects/pagination/

查看文档,它们非常完整且有帮助。在您的代码中,打印页码就像调用

#pagination.getRenderedHTML()#
一样简单。它是非常可定制的,因此您可以更改打印的数字,并且可以根据自己的喜好设计输出的样式。


0
投票

怎么样:

<cfloop from="#url.startpage#" to="#url.startpage+4#" index="i">
  <cfif i LE totalpages>
    <cfoutput><a class="paging" href="?start=#(i*25)-24#">#i#</a></cfoutput> 
  </cfif>
</cfloop>

当然,您需要将“startpage”添加到您的网址并对其进行适当的操作。所以你的第一个链接将是 startpage=1 但你的最后一个链接将是 startpage=4 (如果我正确理解你的问题)。

© www.soinside.com 2019 - 2024. All rights reserved.