Serene Bachページ遷移ページナビゲーションプラグインは有名です。
でも、ほんとうに記事数が多くて、ページナビ10個ついていても、20ページ以上あったりして、そしてダイレクトに一番最後のページへのリンクもついていてほしかったりする場合があります。
(WordPressとかなら付いてますよね)
プラグインの作成はまだ正直無理なので、SEさんにlibの中を直接ごにょごにょ触ってもらいました。
参考にされる方はバックアップは自己責任で…。
せっかく作ってくださったので、メモしておきます。
■テンプレート
ページナビ展開(番号センタリング)プラグイン併用している場合です(併用してなくても使えると思います)
<!-- BEGIN page -->
<div class="page">
{min_page_link}
{prev_page_link}
<!-- BEGIN page_exp -->
{page_navi_exp}
<!-- END page_exp -->
/ {page_num}
{next_page_link}
{max_page_link}
</div>
<!-- END page -->
■Content.pm
49行目あたり
# ==================================================
# // declaration for constant value
# ==================================================
sub CATEGORY_TITLE (){ '%Main%::%Sub%' };
sub PREV_ARROW (){ '<<' };
sub NEXT_ARROW (){ '>>' };
sub MIN_ARROW (){ '>最初へ' };
sub MAX_ARROW (){ '最後へ>' };
825行目あたり
$prev_url = $cgi . ($var{'page'} - 1) if ($var{'page'} > 0);
$next_url = $cgi . ($var{'page'} + 1) if ($var{'page'} < ($page_num - 1));
$prev_url .= '&' . $query if ($query and $prev_url);
$next_url .= '&' . $query if ($query and $next_url);
$cms->tag('prev_page_url'=>$prev_url);
$cms->tag('prev_page_link'=>'<a href="' . $prev_url . '">' . PREV_ARROW . '</a>') if ($prev_url);
$cms->tag('next_page_url'=>$next_url);
$cms->tag('next_page_link'=>'<a href="' . $next_url . '">'. NEXT_ARROW . '</a>') if ($next_url);
return(1);
}
↓
$prev_url = $cgi . ($var{'page'} - 1) if ($var{'page'} > 0); $next_url = $cgi . ($var{'page'} + 1) if ($var{'page'} < ($page_num - 1)); my $min_url = ''; if($var{'page'} > 0) { $min_url = $cgi.'0'; } my $max_url = ''; if ($var{'page'} < ($page_num - 1)) { $max_url = $cgi . ($page_num - 1) ; }$prev_url .= '&' . $query if ($query and $prev_url);
$next_url .= '&' . $query if ($query and $next_url);$min_url .= '&' . $query if ($query and $min_url);
$max_url .= '&' . $query if ($query and $max_url);$cms->tag('prev_page_url'=>$prev_url);
$cms->tag('prev_page_link'=>'<a href="' . $prev_url . '">' . PREV_ARROW . '</a>') if ($prev_url);
$cms->tag('next_page_url'=>$next_url);
$cms->tag('next_page_link'=>'<a href="' . $next_url . '">'. NEXT_ARROW . '</a>') if ($next_url);$cms->tag('min_page_link'=>'<a href="' . $min_url . '">'.MIN_ARROW.'</a>') if ($min_url);
$cms->tag('max_page_link'=>'<a href="' . $max_url . '">'.MAX_ARROW.'</a>') if ($max_url);
return(1);
}
928行目あたり(作業後946行目あたり)
# ==================================================
# // private functions - entry block
# ==================================================
package sb::Content::Entry;sub PREV_ARROW (){ '<<' };
sub NEXT_ARROW (){ '>>' };
sub MIN_ARROW (){ '>最初へ' };
sub MAX_ARROW (){ '最後へ>' };
※最初のページと最後のページボタンを画像にしたい場合
sub MIN_ARROW (){ '>最初へ' };
sub MAX_ARROW (){ '最後へ>' };
↓
sub MIN_ARROW (){ '<img src="img/btn_min.gif" />' };
sub MAX_ARROW (){ '<img src="img/btn_max.gif" />' };
■CSSサンプル(ボタン画像にしたときの隙間とか)
/* -----------------------------
page navi
----------------------------- */
.page {
font: 10px/1.1em;
margin: 5px 12px;
letter-spacing: 1px;
padding: 5px 0px;
text-align: center;
background-color: #F2F2F2;
}
.page img {
vertical-align:middle;
margin: 0px 2px;
}