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 页。有小费吗?

4

3 回答 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第 1 页页和第 10 页在此处输入图像描述

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

于 2012-05-14T18:50:08.283 回答
2

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

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

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

于 2012-05-14T20:14:25.977 回答
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”添加到您的 url 并适当地操作它。所以你的第一个链接是 startpage=1 但你的最后一个链接是 startpage=4 (如果我正确理解你的问题)。

于 2012-05-14T18:52:55.887 回答