Coldfusion Pagination - 固定页码数

时间:2012-12-13 14:51:51

标签: coldfusion pagination cfc

我正在使用dopefly's Pagination.cfc在我正在构建的网站上创建分页,但我不能让它根据我的需要做出具体反应。

我正试着这样开始,就像这样开始

*1* 2 3 4 ... x        
1 *2* 3 4 ... x        
1 2 *3* 4 ... x         
1 2 3 *4* ... x         
1 ... 4 *5* 6 7 ... x  

所以它总是会在中间显示4,在适当的时候显示第一页和最后一页。

然而,目前正在进行

*1* 2 3 4 ... x
1 *2* 3 4 5 ... x
1 2 *3* 4 5 6 ... x
1 2 3 4 *5* 6 7 ... x
1 2 3 4 5 *6* 7 8 ... x
1 ... 3 4 5 6 *7* 8 9 ... x
1 ... 4 5 6 7 *8* 9 10 ... x

所以它一直持续到有8个被显示,然后它将开始保持7在中间,而不是保持4,然后当我们到达第5页时显示4在中间始终与第一个/最后一次。

e:我已尝试使用文档中定义的setNumericEndBufferCount()setNumericDistanceFromCurrentPageVisible()变量,但我对cfc及其行为方式的了解并不广泛足以修改实际cfc(如下面建议的duncan)。

2 个答案:

答案 0 :(得分:1)

约书亚 感谢您使用我的分页库!对不起,它的表现并不像你希望的那样。您的问题看起来类似于最近发布的功能请求,请求setFixedMaximumNumbersShown选项,但有一些弹性计数和一些弹性有点像亚马逊的分页,但正如您所注意到的,它只会在您翻阅记录时增长。你可以自己解决这个问题,但是你必须延长你对CFC使用的限制。

解决方案是创建一个扩展我的组件bouncyPagination.cfc的组件(让我们称之为Pagination.cfc)。您需要至少覆盖​​一种方法来完成任务。您可以先阅读documentation on Extending Pagination.cfc,这可能有所帮助。您的代码看起来像这样。

<cfcomponent extends="Pagination">
    <cffunction name="renderNumericLinksHTML">
        <!--- Your improved bouncy numeric links HTML generation here --->
        <!--- Start by copying & pasting code from the matching --->
        <!--- renderNumericLinksHTML method in Pagination.cfc --->
    </cffunction>
</cfcomponent>

在renderNumericLinksHTML函数中查看Pagination.cfc中的代码。通过复制和粘贴开始自己,然后根据您想要的任何逻辑重写BouncyPagination.cfc写入这些数字链接的方式。您甚至可以添加一些方法来获取和设置数字的边界,在您的示例中,4是神奇的数字。我想你会在你的组件中添加这样的东西。

<!--- Set your new parameter's default by overriding the init method --->
<cffunction name="init">
    <cfset variables.my.BouncyBounds = 4 />
    <return super.init() />
</cffunction>

<!--- Create getter/setter. Note the rendered=false is a flag to force HTML recomposition when a UI option changes. --->
<cffunction name="getBouncyBounds">
    <cfreturn variables.my.bouncyBounds />
</cffunction>
<cffunction name="setBouncyBounds">
    <cfargument name="_BouncyBounds" type="string" />
    <cfset variables.my.BouncyBounds = arguments._BouncyBounds/>
    <cfset variables.my.rendered = false />
</cffunction>

您的新renderNumericLinksHTML方法会调用getBouncyBounds()以编程方式更改较新的弹性分页方法的界限。

我希望能帮到你 - 这就是我没有为你做功课的事情。如果您编写的内容适合您,并且您可以与BSD许可共享,请将代码发送给我,我会将其包含在下一个版本中。

答案 1 :(得分:0)

the documentation来看,您可以使用NumericDistanceFromCurrentPageVisible来实现这一目标。问题是指示使用当前链接任一侧的链接数量。因此你可以将它设置为2并且它将在当前的任一侧显示2个链接,即5个组。要实现4个组,您必须在之前显示1个链接,之后显示2个链接(反之亦然)。 。如果您在链接列表的开头或结尾处或之前有3个链接。

建议您深入研究CFC本身,看看它如何处理NumericDistanceFromCurrentPageVisible,并查看是否可以扩展它以获取2个参数,以显示在之前/之后显示的链接数。或者,修改它以使用该参数作为组中总共显示的链接数的基础。