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を表示します.
とまあこんな感じで簡単に実装できます.