color me shopをいじる機会があったので、今回作ったページャーをご紹介。
テンプレートは、smartyなので馴染みがあり、やりやすかったです。
目指す表示はこんな感じ
<< 前のページへ 1 ・・ 4 5 6 ・・・ 10 次のページへ >>
<{* 現在表示中のページ数をcurrent_pageに設定 *}>
<{ if $smarty.get.page == "" }><{ assign var="current_page" value="1" }><{else}><{ assign var="current_page" value=$smarty.get.page }><{/if}>
<{* 前のページがある場合は、リンク化する *}>
<{if $productlist_prev_page != ""}><< 前のページへ<{else}> << 前のページへ <{/if}>
<{* ページ表示数で商品数を割り、ページ数を算出 *}>
<{math equation="ceil($productlist_num/12)" assign="max_page"}>
<{math equation="$current_page-1" assign="bef_page" }>
<{math equation="$current_page+1" assign="aft_page" }>
<{ assign var="page_flg" value="0" }>
<{section name=pager loop=$max_page }>
<{* 表示中のページに、専用のclassを付与する *}>
<{ if $smarty.section.pager.iteration == $current_page }>
<{$smarty.section.pager.iteration }>
<{ else }>
<{ if $productlist_sort_now == "p" }>
<{ assign var="page_url" value=$productlist_sort_price|cat:"&page="|cat:$smarty.section.pager.iteration }>
<{ elseif $productlist_sort_now == "n" }>
<{ assign var="page_url" value=$productlist_sort_new|cat:"&page="|cat:$smarty.section.pager.iteration }>
<{ else }>
<{ assign var="page_url" value=$productlist_sort_def|cat:"&page="|cat:$smarty.section.pager.iteration }>
<{ /if }>
<{ if $max_page > 7 }>
<{* 1ページ目と最終ページ、現在表示しているページの前後1ページをリンクとして表示 *}>
<{ if in_array($smarty.section.pager.iteration, array(1,$bef_page, $aft_page, $max_page)) }>
<{ assign var="page_flg" value="0" }>
<{ $smarty.section.pager.iteration }>
<{ elseif $page_flg == "0" }>
<{ assign var="page_flg" value="1" }>
・・・
<{ /if }>
<{ else }>
<{ $smarty.section.pager.iteration }>
<{ /if }>
<{ /if }>
<{/section}>
<{* 次のページがある場合は、リンク化する *}>
<{if $productlist_next_page != ""}>次のページへ >><{else}> 次のページへ >> <{/if}>