Home > Yomi-Search(PHP)modified改造 > Yomi-Search(PHP)modified トップページにランキングを表示する

Yomi-Search(PHP)modified トップページにランキングを表示する

アクセスランキングのトップ10とかトップページに表示するために関数を作りました。
ランキング関係のログ取得は少し複雑なので、これで簡単に表示できます。
一応、キーワードランキング以外は全て取得できます。

Yomi-Search(PHP)modifiedver1.3で動作確認してますが、先日公開されたver1.4.1でも動作すると思います。
Yomi-Search(PHP)modified Ver1.4.1

設置場所は、/function.php あたりにコピーしてください。Yomi-Search(PHP)modified1.3用リファラアクセスカウント関数を導入されている方は、referer_count.phpにコピーしてもいいです。
追記:YSPMサイトピックアップを公開したのでそちらを使用してください。

ランキングLOG取得関数

配列のみ返すので、デザインはListを使うなりTableを使うなり自由です。

PHP:
// ランキングLOG取得関数
// 書式:get_rank_logs($arg1,$arg2);
// 引数:$arg1=>モード
//            ・rank     現在の人気ランキング
//            ・rank_bf  前回の人気ランキング
//            ・rank_rui 人気ランキング累計
//            ・rev      現在のアクセスランキング
//            ・rev_bf   前回のアクセスランキング
//            ・rev_rui  アクセスランキング累計
//      $arg2=>取得件数
// 戻り値:logの配列+ pt(ポイント) rank(順位)
function get_rank_logs($mode,$best=10){
    global $cfg, $db;
    $table = (ereg("rev",$mode))?"rev":"rank";
    $min = $cfg["{$table}_min"];
    if(ereg("_rui$",$mode)){ //累計
        $query = "SELECT l.*,t.{$table} AS pt FROM {$db->db_pre}log AS l,{$db->db_pre}rank_counter AS t WHERE l.id=t.id AND t.{$table}>= {$min} ORDER BY t.{$table} DESC LIMIT {$best}";
    }else{
        $time = time();
        $kikan = $cfg["{$table}_kikan"];
        if(ereg("_bf$",$mode)){ //前回
            $start = $time - $kikan * 172800;
            $end = $time - $kikan * 86400 + 1
        }else{ //現在
            $start = $time - $kikan * 86400;
            $end = $time;
        }
        $query = "SELECT l.*,count(*) AS pt FROM {$db->db_pre}log AS l,{$db->db_pre}{$table} AS t WHERE l.id=t.id AND t.time BETWEEN {$start} AND {$end} GROUP BY t.id HAVING pt>= {$min} ORDER BY pt DESC LIMIT {$best}";
    }
    $log_lines = $db->rowset_assoc($query) or $db->error("Query failed $query".__FILE__.__LINE__);
    $log_count = count($log_lines);
    //順位カウント
    $pre_rank = 0;
    $pre_point = 0;
    for ($i = 0; $i <$log_count; $i++) {
        if ($log_lines[$i]["pt"] != $pre_point) {
            $pre_rank = $i + 1;
            $pre_point = $log_lines[$i]["pt"];
        }
        $log_lines[$i]['rank'] = $pre_rank;
    }
    return $log_lines;
}

関数の使い方

トップページ(/template/top.html)などの表示したい場所で使ってください。

リストで表示する

PHP:
//アクセスランク トップ5
$log_lines = get_rank_logs("rev",5);
if($log_lines){
    echo "<ul class='rank'>\n";
    foreach($log_lines as $log_data){
        echo "<li>{$log_data['rank']}位 <a href=\"{$log_data['url']}\">{$log_data['title']}</a></li>\n";
    }
    echo "</ul>\n";
}

テーブルで表示する

PHP:
echo "<table class='rank'>\n";
echo "<tr><td>順位</td><td>ポイント</td><td>サイト</td></tr>\n";
//人気ランク トップ5
$log_lines = get_rank_logs("rank",5);
foreach($log_lines as $log_data){
    echo "<tr><td>{$log_data['rank']}位</td><td>{$log_data['pt']}</td><td><a href=\"{$log_data['url']}\">{$log_data['title']}</a></td></tr>\n";
}
echo "</table>\n";


関連記事

Comments:0

Comment Form
Remember personal info

Trackback+Pingback:0

TrackBack URL for this entry
http://blog.seo-so.com/archives/19/trackback
Listed below are links to weblogs that reference
Yomi-Search(PHP)modified トップページにランキングを表示する from SEO-SO blog

Home > Yomi-Search(PHP)modified改造 > Yomi-Search(PHP)modified トップページにランキングを表示する

Feeds
メタ情報

Page Top