超適当なページャを表示するTT のテンプレート
pager.tt
[% disp_pages = 10; disp_pages = disp_pages - 1; %] [% offset = c.stash.pager.offset; limit = c.stash.pager.limit; rows = c.stash.pager.rows; %] [% url = c.stash.pager.url; query = c.stash.pager.query; %] [% curr_page = ( offset div limit ) + 1; max_page = ( rows + limit - 1 ) div limit; %] [% disp_min_page = curr_page - disp_pages < 1 ? 1 : curr_page - disp_pages; disp_max_page = disp_min_page + disp_pages > max_page ? max_page : disp_min_page + disp_pages; %] [% IF curr_page > 1 %] [% prev_offset = offset - limit %] <a href="[% url %]?offset=[% prev_offset %]&limit=[% limit %][% query %]"><<</a> [% ELSE %] [% END %] [% list = [ disp_min_page .. disp_max_page ] %] [% FOR i IN list %] [% IF i == curr_page %] [% i %] [% ELSE %] <a href="[% url %]?offset=[% ( i - 1 ) * limit %]&limit=[% limit %][% query %]">[% i %]</a> [% END %] [% END %] [% IF curr_page < max_page %] [% next_offset = offset + limit %] <a href="[% url %]?offset=[% next_offset %]&limit=[% limit %][% query %]">>></a> [% END %] んで、 << 1 2 3 4 5 6 7 8 9 10 >> こんな感じの出る。
呼び出し側は、
なんらかの方法で
-
- disp_pages 表示するページの数
- offset 何件目から表示しているか
- limit 1ページ内の表示件数
- url ページャアクションのURL
- qurey ページャアクションのクエリー
を渡しあげれば良い。
ex.) [% INCLUDE pager.tt disp_pages = 10 offset = 50 limit = 50 url = ほげほげ query = 的な。 ]%