始めまして。THE ROOMのPOWER SEARCHというCGIリンク集を組み込んでいます。

そこで、動作の変更をしたいのですが、
そのCGIには新着サイトや更新サイトというカテゴリーが最初からありますが、
登録したサイトが、新着サイトには設定した期間表示されるのに、
更新サイトには更新したサイトが自動的に表示されません。
これを、自動的に一定期間表示させるには、どのファイルのどのソースを変更すればよいのでしょうか。“ソースの何行目を変更”という形を付けて、ご回答下さい。
宜しくお願い致します。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2007/12/21 09:40:36
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:Mook No.1

回答回数1314ベストアンサー獲得回数393

ポイント35pt

コメントで十分な内容ですが、コメントが無効になっているので回答で失礼します。


PorwerSerch には新着サイトはありますが、更新サイトはデフォルトでは見当たらないのですが、ご自身で設定したカテゴリですか?

だとしたら、一定期間表示されるという機能はもともと無いので、それを今回希望されているということなのでしょうか。


それとも、更新された情報が自動で表示されるように機能しているのでしょうか。

それが初期設定であったとなると、見ているバージョンが異なっているかもしれません。


そのあたりをまず確認いただけると、対応の方向が明確になってくるかと思います。

Powersearch SAMPLE

id:akr-x

御世話になります。仰るとおりでした。

更新サイトは自分で新たに設定したカテゴリです。

新たに登録されたサイトは、デフォルトの設定でも“新着サイト”に7日間表示されますが、それと同じように、情報を更新したサイトが“更新サイト”に7日間表示されるように変更したいのです。難しい事でしょうか。

単にソースの新着サイトの“7日間表示”の設定を書き写せば、解決できるかもしれませんが、不安だったので投稿致しました。

是非、お力添えをお願い致します。

2007/12/17 17:10:22
id:Mook No.2

回答回数1314ベストアンサー獲得回数393

ポイント35pt

まず、Powerserach では新着と更新を区別していません。更新された情報も、新着と同様に扱われているかと思います。

内部では時間情報はひとつしか持っていませんので、更新と新着を区別するためには内部のデータ構造を変更し、それを扱えるようにしなければなりません。


技術的にできなくはありませんが、このための変更箇所は非常に多く、掲示板のやり取りで更新できる範疇を超えるように思います。

更新された場合も新着と同様に扱われますので、このままの設定で運用されてはいかがでしょうか。


補足や簡単なやり取りはコメントで行いたいと思いますので、コメントを有効にしてください。

http://dream.lib.net/room/cgi/e_ps.html

  • id:Mook
    ご参考までに、もし実装するとした場合の変更方法の一例です。

    (1)データの書き込み部分を9項から10項に変更する(すべてのファイル)
    (2)データの読み込み部分を9項から10項に変更する(すべてのファイル)
    (3)更新処理で10項に更新日付を記録する(ps_user.cgi)
    (4)更新表示処理を新たに作成し、10項目を見て新規処理と同様にする(ps_search.cgi)。

    データの読み込み処理はざっとみた感じ20箇所くらいです。
  • id:akr-x
    有難う御座います。
    データの書き込み、読み込み部分とはソースの中のどの記述に
    なりますでしょうか。

    また(4)の更新表示処理とは
    どのような記述になりますでしょうか。

    大変お手数ですが、Mook様ほど、知識がまだないもので
    変更箇所を記載して頂けましたら、
    終了時にptを増加させて頂きたいと思います。

    申し訳御座いませんが、どうぞ宜しくお願い致します。
  • id:Mook
    (4)は抽象的な表現ですみません。
    実装は少し規模が大きくなると思いますので、
    後ほどコメントいたします(締め切りには間に合わないですね)。
  • id:akr-x
    申し訳御座いません。また、有難う御座います。
    それではまた、同じ内容で質問致しますので、是非、
    ご協力をお願いしたいと思います。

    本当に助かります。ちなみに、私のサイトは“夜道具ナイトマーケット”
    と申します。
    http://www.yadougu.com/
    お時間があれば参考までに是非御覧になってみて下さい。
    宜しくお願い致します。
  • id:Mook
    (4)に関してコメントで回答します。

    まず最初に訂正です。
    PowerSearch は 9 項ではなく12項あるので、13項目を追加することになります。

    -----------------
    ps_search.cgi で80 行目くらいに
    elsif ($act eq "update"){&update;}
    を追加し、

    -----------------
    どこでもよいので下記の関数を追加します。
    sub update{
    #更新サイト
    my @site;
    &filelock("linkdata");
    open (IN,"$linkdata");
    while(<IN>){
    if ( (split(/<>/,$_))[12] + $newtime*86400 >= time() ) {
    $totalct++;
    push(@site,$_) if ($totalct >= $startnum) && ($totalct <= $endnum);
    }
    }
    close (IN);
    &fileunlock("linkdata");
    $endnum = $totalct if $totalct < $endnum;
    $startnum = 0 if $totalct == 0;

    if ($totalct == 0){
    $resultmessage = "更新されたサイトはありません。<br><br>";
    $linkbar = $siteindicate = "";
    }else{
    $resultmessage = "過去$newtime日間に$totalctのサイトが更新されました。<br><br>";
    &linkbar("act=new&line=$line");
    &siteindicate("",@site);
    }
    &databar();
    &searchbar("","<option value=\"\" selected>$searchtitle\n");
    $action = "更新サイト";
    &html_output;
    }

    -----------------
    メニュー表示部に
    ▼<a href="./ps_user.cgi?act=update">更新</a>
    を追加します。


    以上が (4) にあたる実装例です。
  • id:Mook
    遅くなりましたが、サイト拝見しました。
    とても上手にカスタマイズされていますね。


    PowerSearchでここまでできるんだと驚きました。
  • id:akr-x
    有難う御座います。これもひとえにMOOK様をはじめ、皆様のおかげです。
    上記のご回答有難う御座いました。

    間違えると大変ですので慎重に作業を進めて行きたいと思います。
    またご質問させて頂きますので宜しくお願い致します。
  • id:akr-x
    ご面倒をおかけ致します。最初からつまづいてしまいました。

    MOOK様のご回答で、
    ●PowerSearch は 9 項ではなく12項あるので、13項目を追加することになります。

    と、ありますが、具体的にどのような作業をするのか理解出来ませんでした。
    お手数おかけ致しまして申し訳御座いません。

    ●また、データの書き込み、読み込み部分とは各ソースの中のどの部分の記述に
    なりますでしょうか。

    お忙しいとは思いますが、お手すきの際にご回答、宜しくお願い致します。
  • id:Mook
    Powersearch の linkdata.datをご確認ください。
    1行が 12の <> で区切られていると思います。 これがデータが12項あるという意味です。
    ----------------------
    個人マーク<>キーワード<>登録者サイトコメント<>管理者コメント<>サイト名<>サイトURL<>サイトバナー<>アクセスカウント<>登録時間<>登録者名<>email<>パスワード(暗号化された)<>
    ----------------------
    という形式なので、現在のデータ行の行末に更新時間を追加し
    <>.....<>更新時間<>
    となるようにソースを変更します。

    そのためデータを読書きしているところ(たいていは open(... $linkdata ) の近辺です)をこの形に対応するように変更する必要があります。
    それが最初に述べた変更内容になります(読込み:約20箇所、書込み:未確認)。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません