記事No | : 14884 |
投稿日 | : 2016/06/02(Thu) 12:52:07 |
タイトル | : Cosmo Navigatorの検索結果表示について |
ID情報 | : sayaka77 |
投稿者 | : さやか |
URL | : http://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 .= " 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 |
URL | : http://shade-search.com/sts/fsw/wiki.cgi |
たとえば、ページボタンの下を以下のように修正します。
# ページボタン
$pg_btn .= " 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> ";
}
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 .= " <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 |
投稿者 | : さやか |
URL | : http://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 |
URL | : http://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 |
投稿者 | : さやか |
URL | : http://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 |
投稿者 | : さやか |
URL | : http://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 |
URL | : http://shade-search.com/sts/fsw/wiki.cgi |
sub page_btn の「次へ」を表示している行を
$pg_btn .= " <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> ";
と変更します。
記事No | : 14949 |
投稿日 | : 2016/07/01(Fri) 17:03:57 |
タイトル | : Re^7: Cosmo Navigatorの検索結果表示について |
ID情報 | : sayaka77 |
投稿者 | : さやか |
URL | : http://dios-ent.co.jp/navi/navi.cgi?mode=cate&cat=0&sub=1&pg=250&strt=25 |
hirayama様
いつも大変お世話になります。
できました!ご教授頂き、どうもありがとうございました。m(._.)m