2

我正在使用dopefly 的 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(如下面的邓肯建议)。

4

2 回答 2

1

Joshua,感谢您使用我的分页库!抱歉,它的行为与您希望的不完全一样。您的问题看起来类似于最近发布的功能请求,请求setFixedMaximumNumbersShown选项,但具有某种弹性计数和某种弹性,有点像亚马逊的分页,但正如您所注意到的,它只会随着您对记录的分页而增长。您可以自己解决此问题,但您将不得不稍微扩展您对 CFC 的使用限制。

bouncyPagination.cfc解决方案是创建一个扩展我的组件的组件(我们称之为Pagination.cfc. 您将需要覆盖至少一种方法来完成您的任务。您可以先阅读有关 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>

查看Pagination.cfcrenderNumericLinksHTML 函数中的代码。从复制和粘贴开始,然后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 许可证共享,请将代码发送给我,我将在下一个版本中包含它。

于 2012-12-13T20:56:29.350 回答
0

文档看来,您可以通过使用NumericDistanceFromCurrentPageVisible. 问题在于指出了当前链接的任一侧要使用多少个链接。因此,您可以将其设置为 2,它将在当前的任一侧显示 2 个链接,即 5 个组。要实现 4 个组,您必须在之前显示 1 个链接,之后显示 2 个链接(反之亦然).. . 或 3 个链接在链接列表的开头或结尾处之后或之前。

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

于 2012-12-13T15:18:24.960 回答