限制分页列表中的页数

时间:2012-05-14 18:32:24

标签: coldfusion paging

我正在努力改进网站的分页系统,我遇到了一些我似乎无法解决的简单问题。我试图一次显示页面(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页。有什么提示吗?

3 个答案:

答案 0 :(得分: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

您应该可以轻松修改此功能,以便按照您的需要进行操作。 (我碰巧不喜欢所有的链接一下子按照你描述的方式改变)

答案 1 :(得分:2)

有一个很棒的开源分页库可以解决您的问题。我不能说它的好东西,因为我写了。无耻,我知道。反正:

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

查看文档,它们非常完整且有用。在您的代码中,打印页码就像调用#pagination.getRenderedHTML()#一样简单。它非常可定制,因此您可以更改打印的数字,并根据需要设置输出样式。

答案 2 :(得分: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(如果我理解你的问题)。