我正在使用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)。
答案 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个参数,以显示在之前/之后显示的链接数。或者,修改它以使用该参数作为组中总共显示的链接数的基础。