CGI サポートフォーラム

新規投稿ツリー表示一括表示リスト表示検索

質問をする前に、過去ログに同じ質問がないか検索してください。

この記事No.374 を本当に削除しますか?
(この記事以下の全てのツリーを含む)

削除をするには管理パスワードが必要です。
管理パスワード:

Re:リスト表示の順番を変えるには?
投稿者:masaya さん  ( uid 21158, posts:5, since 2004/01/06 )
投稿日: 2004/01/15 (木) 01:40 No.374 | 編集 | 削除

記事No.371 へのコメントです。

>元制作者様が配布を停止されたようですが、改造版として配布を継続していただけて、本当に嬉しく思っております。お二方に感謝してます。

もともと、EXITの登録機能が使いにくかったので、自分用に改造したものを配布していただけなので、急にユーザが増えてびっくりするやらうれしいやらです。(^^;
# Cubixさんが、サイトを縮小したのも知らなかったし・・・。


>リスト表示について質問なのですが、
>リストの順番を、できればメニューの表示の順番どおり、
>Aカテゴリ-1サブカテゴリ
>Aカテゴリ-2サブカテゴリー
>Bカテゴリ-1サブカテゴリー
>Bカテゴリ-2サブカテゴリー
>Bカテゴリ-3サブカテゴリー…
>というふうに表示させたいのですが、どうしたらいいでしょうか。

LIST表示ルーチンを以下のように改造すると、ご希望の動作になります。
ただ、全カテゴリ・サブカテゴリ・データに対して、並び換え処理をするので処理が遅くなってしまいます。
登録件数・サーバのキャパによっては、使うか決めてください。

exit.cgi 439行目以降

##-->LIST表示

sub list {
my ($tmp_catid, $tmp_subid, $catdata, $subdata, $linkdata, $tmp, $time);
my (@tmp_sub);

&LoadCategory;
&LoadSubCategory;
&LoadLink;

&head;
$html .= "<br><table width=400 border=0 cellspacing=0 cellpadding=0>\n<tr><td>\n";

foreach $tmp_catid (keys %category) {
$catdata = &GetCategory ($tmp_catid);
$tmp_list{$catdata->{'group'}."_".$catdata->{'catname'}."_".$tmp_catid} = $tmp_catid;
}

foreach (sort keys %tmp_list) {
$catdata = &GetCategory ($tmp_list{$_});
$html .= &PageHeader ($catdata->{'catname'});

foreach $tmp_subid (keys %subcategory) {
$subdata = &GetSubCategory ($tmp_subid);
$tmp_sublist{$subdata->{'group'}."_".$subdata->{'subname'}."_".$tmp_subid} = $tmp_subid;
}

foreach (sort keys %tmp_sublist) {
$subdata = &GetSubCategory ($tmp_sublist{$_});
if ($subdata->{'catid'} eq $catdata->{'catid'}) {
# $html .= "<a href=\"$script?mode=text&\" class=\"menu\"><img src=\"$imgdir/$dot_open\" border=0> $subdata->{'subname'}</a><br>\n";
$html .= "<img src=\"$imgdir/$dot_open\" border=0 class=\"menu\" class=\"menu\"> $subdata->{'subname'}<br>\n";

foreach $tmp_id (sort {$a <=> $b} keys %link) {
$linkdata = &GetLink($tmp_id);
@tmp_sub = split (":", $linkdata->{'subid'});
foreach $tmp (@tmp_sub) {
if ($tmp eq $subdata->{'subid'}) {
$html .= " <a href=\"$linkdata->{'url'}\" $target class=\"listhost\"><img src=\"$imgdir/$dot_image\" border=0> $linkdata->{'sitename'}</a>";
if ($linkdata->{'master'}) { $html .= ": <span class=\"listmaster\">MASTER:$linkdata->{'master'} $keisho</span>";}
$html .= "<a href=\"$script?mode=vew&id=$linkdata->{'id'}\"><img src=\"$imgdir/data.$ext\" width=30 height=9 border=0></a>";
$time=time();
if ($time <= $linkdata->{'time'}+(60*60*24*$newd)) { $html .= "<img src=\"$imgdir/new.$ext\" width=25 height=9>"; }
$html .= "<br>\n";
}
}
}
$html .= "<img src=\"$imgdir/line2.$ext\" width=400 height=5><br>\n";
}
}
}
$html .= "<br>\n<div><img src=\"$imgdir/line.$ext\" width=400 height=5></div>\n<span class=\"ss\">□タイトルをクリックするとサイトのURLにジャンプします.<br>□<img src=\"$imgdir/data.$ext\" width=30 height=9 border=0 align=middle>をクリックするとそのサイトの詳細が見られます.</span>\n</td></tr>\n</table>\n";
&foot;
}

リンクデータの表示順番が逆なら、
foreach $tmp_id (sort {$a <=> $b} keys %link) {
の部分を
foreach $tmp_id (sort {$b <=> $a} keys %link) {
と変えてくださいね。


>私のでは、カテゴリの順番が登録順でもないですし、カテゴリのNO順でもないのですが、何か規則性があるのでしょうか。

サブカテゴリの名前順になっています。
LIST表示って、あまりつかわないので、もとのままあんまりいじってないんですよ。


>ちなみに、リスト表示も右寄せにしようと、exit.cgiのLIST表示部分の8行目にあるtableタグの前に、多分ココだろう!と<div align="right">を入れてみたのですが、エラーが出て慌てて直しました。
>これは何か方法がありますでしょうか。

そこでOKですよ。
<div align="right">ではなくて、<div align=\"right\">と入れてみてください。

[ この記事にコメントを返信する ] [ 原文引用 ]

- TOP -

管理者:webmaster
NICOLE's - WWWForum 3.7c  Modified by masaya
Catch: Tue Jun 18 00:08:14 2024
[jcode.pl:679:warn] defined(%hash) is deprecated at lib/jcode.pl line 679.
[jcode.pl:679:warn] (Maybe you should just omit the defined()?)
[jcode.pl:688:warn] defined(%hash) is deprecated at lib/jcode.pl line 688.
[jcode.pl:688:warn] (Maybe you should just omit the defined()?)

/wwwforum/wwwforum.cgi?az=delete&id=11&number=374 with Perl 5.016003 for freebsd