POTI-boardの頁リンクが増え続けるのを制御(その2)

POTI-boardの現在の仕様だと、300ページ分ログがあると、300ページ全部表示してしまうので、長く運用してログをストックしていくタイプの掲示板だと厳しい…。

だから、最新から19ページまでは古いログを表示しない、20ページになったら、21ページ以後のページがすべて表示される。20ページ分のログが存在しない時は、存在しているログの分だけ表示するようにプログラムを書き直して終わり…の筈だったのですが。

それだとログが20ページまでしか存在していないと思う人がでてくるという指摘がありました。

ログが21ページ分より多くかつ最新から20ページまで表示している時は、21ページを
[0][1][2](中略)[20][>>]
のように表示する事ができれば…。

直接テンプレートに[>>]といれて、21ページへのリンクを貼る事もできますが…。
それだと…ログファイルが少ない時と多い時とでテンプレートを書き直さなければならなくなるのでプログラムで対応したい…と思いました。

POTI-board

こんな感じになりました。
//下段ページリンクの出力をifで分岐
//0-21まで表示する事を想定
//カウントツリーが指定した数値より小さい場合は全件表示

if(220 > count($tree)){
for($i = 0; $i < count($tree) ; $i+=PAGE_DEF){
if($st==$i){
$pformat = str_replace("<PAGE>", $i/PAGE_DEF, NOW_PAGE);
}else{
if($i==0){
$pno = str_replace("<PAGE>", "0", OTHER_PAGE);
$pformat = str_replace("<PURL>", PHP_SELF2, $pno);
}else{
$pno = str_replace("<PAGE>", $i/PAGE_DEF, OTHER_PAGE);
$pformat = str_replace("<PURL>", ($i/PAGE_DEF).PHP_EXT, $pno);
}
}
$paging.=$pformat;
}
}

//下段ページリンクの出力をifで分岐
//スレッド数が指定した数値より大きな時は全件表示
//数値を-1小さく設定しないとリンクが表示されないページができるかも。

elseif($i > 219 ){
for($i = 0; $i < count($tree) ; $i+=PAGE_DEF){
if($st==$i){
$pformat = str_replace("<PAGE>", $i/PAGE_DEF, NOW_PAGE);
}else{
if($i==0){
$pno = str_replace("<PAGE>", "0", OTHER_PAGE);
$pformat = str_replace("<PURL>", PHP_SELF2, $pno);
}else{
$pno = str_replace("<PAGE>", $i/PAGE_DEF, OTHER_PAGE);
$pformat = str_replace("<PURL>", ($i/PAGE_DEF).PHP_EXT, $pno);
}
}
$paging.=$pformat;
}
}

//下段ページリンクの出力をifで分岐
//スレッド数が指定した数値より小さい時は任意の数値でページを表示

elseif($i < 220 ){
for($i = 0; $i < 220 ; $i+=PAGE_DEF){
if($st==$i){
$pformat = str_replace("<PAGE>", $i/PAGE_DEF, NOW_PAGE);
}else{
if($i==0){
$pno = str_replace("<PAGE>", "0", OTHER_PAGE);
$pformat = str_replace("<PURL>", PHP_SELF2, $pno);
}else{
if($i==210){
$pno = str_replace("<PAGE>", ">>", OTHER_PAGE);
// $pformat = str_replace("<PURL>", PHP_SELF2, $pno);
$pformat = str_replace("<PURL>", ($i/PAGE_DEF).PHP_EXT, $pno);
}else{
$pno = str_replace("<PAGE>", $i/PAGE_DEF, OTHER_PAGE);
$pformat = str_replace("<PURL>", ($i/PAGE_DEF).PHP_EXT, $pno);
}
}}
$paging.=$pformat;
}
}
//ここまで
21ページ目なら、[>>]にという記述が増えただけなんですけどね。
ページ番号20を表示させたかったので、ひとつ前の記事で書いたものより、+10スレッド数が多くなっています。
1ページ10件表示用なので、例えば5件表示で使うと [>>] が横並びの最後にならず、ひとつ手前に出てしまいます。

お絵かき掲示板はこちら。

この記事へのコメント

コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。