最初のページ・最後のページボタン for Serene Bach

ページナビ
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 (){ '&lt;&lt;' };
sub NEXT_ARROW (){ '&gt;&gt;' };
sub MIN_ARROW (){ '&gt;最初へ' };
sub MAX_ARROW (){ '最後へ&gt;' };

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 .= '&amp;' . $query if ($query and $prev_url);
$next_url .= '&amp;' . $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 .= '&amp;' . $query if ($query and $prev_url);
$next_url .= '&amp;' . $query if ($query and $next_url);

$min_url .= '&amp;' . $query if ($query and $min_url);
$max_url .= '&amp;' . $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 (){ '&lt;&lt;' };
sub NEXT_ARROW (){ '&gt;&gt;' };
sub MIN_ARROW (){ '&gt;最初へ' };
sub MAX_ARROW (){ '最後へ&gt;' };

※最初のページと最後のページボタンを画像にしたい場合

sub MIN_ARROW (){ '&gt;最初へ' };
sub MAX_ARROW (){ '最後へ&gt;' };

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;
}

Comments:0

Comment Form

Trackbacks:0

TrackBack URL for this entry
http://www.otogawa.com/cms/mt-tb.cgi/202
Listed below are links to weblogs that reference
最初のページ・最後のページボタン for Serene Bach from px*blog