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>

もちろん、URLに「startpage」を追加して適切に操作する必要があります。したがって、最初のリンクはstartpage = 1になりますが、最後のリンクはstartpage = 4になります(質問を正しく理解している場合)。

于 2012-05-14T18:52:55.887 に答える