KENT-WEB サポートコーナー 過去ログ [ 0339 ]


記事No: 14884
投稿日: 2016/06/02(Thu) 12:52:07
タイトルCosmo Navigatorの検索結果表示について
ID情報: sayaka77
投稿者: さやか
URLhttp://dios-ent.co.jp/navi/navi.cgi

お世話になります。
Cosmo Navigatorを使いたいと思いKENTさんのサンプルをいろいろ試してみました。
データが溜まってきたときに、ちょっと使いづらいところがありましてアドバイスを頂けたら助かります。

検索結果の表示件数のところですが、

1 - 10 [ 106件中 ] Page: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |

と、表示されるのを

下記のように10件ごとに区切りをつけたいのですが・・・

1 - 10 [ 156件中 ] ←前へ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 次へ→


11 - 20 [ 156件中 ] ←前へ | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 次へ→

と言うようにしたいのす。

# 繰越ボタン作成
#-----------------------------------------------------------
sub page_btn {
my ($i,$pg,$pgmax) = @_;
$pgmax ||= 10;

# 表示範囲
my $from = $pg + 1;
my $to = $pg + $pgmax > $i ? $i : $pg + $pgmax;
my $pg_btn = "[ <b>$i</b>件中 ] $from - $to ページを表\示";

# ページ繰越ボタン作成
if ($pg - $pgmax >= 0 || $pg + $pgmax < $i) {

# 引数
my $param = "mode=$in{mode}";
if ($in{word} ne '') {
my $word = &url_enc($in{word});
$param .= "&word=$word&cond=$in{cond}&list=$pgmax";
}
$param .= "&cat=$in{cat}";
$param .= "&sub=$in{sub}" if ($in{sub} ne '');

# ページボタン
$pg_btn .= "&nbsp;&nbsp; Page: ";
my ($x, $y) = (1, 0);
while ($i > 0) {
if ($pg == $y) {
$pg_btn .= qq(| <b style="color:red">$x</b> );
} else {
$pg_btn .= qq(| <a href="$cf{db_cgi}?$param&pg=$y">$x</a> );
}
$x++;
$y += $pgmax;
$i -= $pgmax;
}
$pg_btn .= "|";
}
return $pg_btn;
}

の部分を改造してるのですが、なかなかうまくできません(><;)
もしよろしければアドバイスお願いします。


記事No: 14885
投稿日: 2016/06/02(Thu) 16:51:37
タイトルRe: Cosmo Navigatorの検索結果表示について
ID情報: hirayama
投稿者: hirayama
URLhttp://shade-search.com/sts/fsw/wiki.cgi

たとえば、ページボタンの下を以下のように修正します。

# ページボタン
$pg_btn .= "&nbsp;&nbsp; Page: ";
my $maxindex = 10;# インデックスの最大数
if ($in{'strt'} > 0) {
my $back = $in{strt} - $maxindex;
$back = 0 if $back < 0;
$pg_btn .= "<a href=\"$cf{navi_cgi}?$param&pg=" . ($in{'pg'} - ($in{'strt'} - $back) * $pgmax) . "&strt=$back\">←前へ</a>&nbsp;&nbsp;";
}
my ($x, $y) = (1, 0);
while ($i > 0) {
if (($in{strt} - 1)*$pgmax < $_[0] - $i && ($in{strt} + $maxindex)*$pgmax > $_[0] - $i) {
if ($pg == $y) {
$pg_btn .= qq(| <b style="color:red">$x</b> );
} else {
$pg_btn .= qq(| <a href="$cf{navi_cgi}?$param&pg=$y&strt=$in{'strt'}">$x</a> );
}
}
$x++;
$y += $pgmax;
$i -= $pgmax;
}
$pg_btn .= "|";
if ($_[0] > ($in{strt} + $maxindex) * $pgmax) {
my $front = $in{strt} + $maxindex;
$front = int($_[0] / $pgmax) - $maxindex + 1 if $front > int($_[0] / $pgmax) - $maxindex + 1;
$pg_btn .= "&nbsp;&nbsp;<a href=\"$cf{navi_cgi}?$param&pg=" . ($in{'pg'} + ($front - $in{'strt'}) * $pgmax) . "&strt=$front\">次へ→</a>";
}

strtというパラメータを追加し、これで指定したページから$maxindex 個だけインデックスを表示するという修正です。


記事No: 14890
投稿日: 2016/06/03(Fri) 13:02:10
タイトルRe^2: Cosmo Navigatorの検索結果表示について
ID情報: sayaka77
投稿者: さやか
URLhttp://dios-ent.co.jp/navi/navi.cgi?mode=cate&cat=0&sub=1

hirayama様 ありがとうございます。

試してみましたがエラーが出ますので
最後の部分の
・・・ "&strt=$front\">次へ→</a>";
}

}←追加
}←追加

 }を 2つ使いすると一応表示はできるのですが
次へ→ をクリックすると ←前へ が出てこなく
ページ表示全体が消えてしまいます。
もう少し頑張ってみます。


記事No: 14891
投稿日: 2016/06/03(Fri) 13:39:05
タイトルRe^3: Cosmo Navigatorの検索結果表示について
ID情報: hirayama
投稿者: hirayama
URLhttp://shade-search.com/sts/fsw/wiki.cgi

> ページ表示全体が消えてしまいます。

ひょっとして
return $pg_btn;
を消してしまってます?

sub page_btn全体は以下のようになります。
http://shade-search.com/sts/fsw/tmp/navi.cgi_shusei.txt


記事No: 14892
投稿日: 2016/06/03(Fri) 14:22:07
タイトルRe^4: Cosmo Navigatorの検索結果表示について
ID情報: sayaka77
投稿者: さやか
URLhttp://dios-ent.co.jp/navi/navi.cgi?mode=cate&cat=0&sub=1&pg=60&strt=6

hirayamaさま

あっ!ごめんなさい・・・消してました><;

> ひょっとして
> return $pg_btn;
> を消してしまってます?

今、修正したらできました!(^−^)
ありがとうございました。


記事No: 14947
投稿日: 2016/07/01(Fri) 14:18:44
タイトルRe^5: Cosmo Navigatorの検索結果表示について
ID情報: sayaka77
投稿者: さやか
URLhttp://dios-ent.co.jp/navi/navi.cgi?mode=cate&cat=0&sub=1&pg=40&strt=0

大変申し訳ありません。
もう1か所、修正したいところがありまして・・・(><)

例えば5ページ目を開いていて
「次へ」をクリックすると
15ページ目が表示されるのですが、
これをページの最初(11ページ目)が表示されるようにしたいのです。

常に「次へ」をクリックすると次のページの最初が表示・・・

となるようにしたいのですが、もしよろしければご教授お願い致します。


記事No: 14948
投稿日: 2016/07/01(Fri) 15:43:54
タイトルRe^6: Cosmo Navigatorの検索結果表示について
ID情報: hirayama
投稿者: hirayama
URLhttp://shade-search.com/sts/fsw/wiki.cgi

sub page_btn の「次へ」を表示している行を

$pg_btn .= "&nbsp;&nbsp;<a href=\"$cf{navi_cgi}?$param&pg=" . ($front * $pgmax) . "&strt=$front\">次へ→</a>";

と変更すればいいと思います。
前へを押しても最初を表示するなら、「前へ」の行も

$pg_btn .= "<a href=\"$cf{navi_cgi}?$param&pg=" . ($back * $pgmax) . "&strt=$back\">←前へ</a>&nbsp;&nbsp;";

と変更します。


記事No: 14949
投稿日: 2016/07/01(Fri) 17:03:57
タイトルRe^7: Cosmo Navigatorの検索結果表示について
ID情報: sayaka77
投稿者: さやか
URLhttp://dios-ent.co.jp/navi/navi.cgi?mode=cate&cat=0&sub=1&pg=250&strt=25

hirayama様

いつも大変お世話になります。

できました!ご教授頂き、どうもありがとうございました。m(._.)m


[検索ページ] [掲示板]