2

dopeflyのPagination.cfcを使用して、構築しているサイトにPaginationを作成していますが、具体的に希望どおりに反応させることができません。

私はそれを取得しようとしているので、このように始まります

*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が表示されるまで続行し、4を維持するのではなく、中央に7を維持し始めます。次に、5ページ目を押すと、常に中央に4が表示され、最初/最後が終わり。

e:setNumericEndBufferCount()ドキュメントで定義されている変数と変数を試してみましたが、 cfcsetNumericDistanceFromCurrentPageVisible()とその動作に関する知識は、実際の値を変更するほど広範ではありませんcfc(以下で提案するduncanのように)。

4

2 に答える 2

1

Joshua、Paginationライブラリをご利用いただきありがとうございます。申し訳ありませんが、期待どおりに動作していません。あなたの問題は最近投稿された機能リクエストに似ており、setFixedMaximumNumbersShownオプションをリクエストしていますが、ある種の弾力性のあるカウントとAmazonのページ付けのような弾力性がありますが、お気づきのように、レコードをページングするときにのみ大きくなります。これは自分で修正できますが、CFCの使用制限を少し広げる必要があります。

bouncyPagination.cfc解決策は、私のコンポーネントを拡張するコンポーネント(それを呼びましょう)を作成することPagination.cfcです。タスクを実行するには、少なくとも1つのメソッドをオーバーライドする必要があります。最初に、ExtendingPagination.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自体を詳しく調べ、CFCがNumericDistanceFromCurrentPageVisibleをどのように処理するかを確認し、これを拡張して、前後に表示するリンク数の2つのパラメーターを取得できるかどうかを確認することをお勧めします。または、グループ内に合計で表示するリンクの数の基準としてそのパラメーターを使用するように変更します。

于 2012-12-13T15:18:24.960 に答える