Ploneのページネーション処理

Ploneは,ページネーション処理を簡単に実装できる仕組みがあります.

plone.batching というモジュールが標準で組み込まれており,テンプレートに数行書くだけで簡単に利用できます.

テンプレートでバッチ処理したいリスト要素を渡すことで使えます.

<div tal:define=“results view/getItem;
  Batch python:modules[‘Products.CMFPlone’].Batch;
  b_start python:request.get(‘b_start’, 0);

  batch python:Batch(results, 20, );”>
 <div tal:repeat=”item batch”> … </div>
</div>

上記の場合,resultsのリストを20件ごとにページ分割しています.

また,Batchクラスを生成するときに,引数を細かく指定することができます.

Batch(sequence, size, start, end, orphan, overlap, pagerange)
  • sequence
    • ページネーションしたいリストを渡します.
  • size
    • ページあたりの表示件数を指定します.
  • start
    • 表示ページを指定します.default=0
  • end
    • default=0
  • orphan
    • 最後のページの数がこのサイズ以下の場合,前のページに含めます.default=0
  • overlap
    • ページでオーバーラップする数を指定します.default=0
  • pagerange
    • ページ番号を表示するレンジを決めます.default=7,現在が5ページ目の時に3,4,5,6,7を表示します.

とまあこんな感じで簡単に実装できます.