女性必見!オフライン中でも稼げる!あなたが外で遊んでる間にもモンロー世界があなたの物に!
男性必見!趣味を活かして楽しく稼ぐ!この不景気の中、ブログなどでガッポリ副収入を狙おう!

2007年06月04日 月曜日

MTで人気エントリーのランキングを表示 【ウェブログ】

当ブログの各エントリーへのアクセス数を集計し、そのランキングを表示させてみた。
現在、ランキングの上位5位までを「人気エントリー」としてサイドバーに表示させている。

ランキング更新のタイミングは毎時。
集計期間は、いまのところ過去一週間としている。

参考にしたのは、下記のサイトだ。

 Open MagicVox.net:人気記事のランキングを表示する

基本的に上記サイト及び、上記サイトからのリンク先サイトの内容に沿ってやってみた。
以下、覚え書き。

 自分の環境
  MTのバージョン:Movable Type 3.35-ja
  レンタルサーバー:さくらインターネット
  ドメイン:独自ドメイン(capsule-net.com)
  Apacheログの格納場所:/home/capsule-net/log 配下
  その他:PHPが利用可能であること(当ブログは、もともとphp化してある)


 1. 前準備
   まず、mt-config.cgi の中に以下の記述が無い場合、以下の記述を追加する。
   理由は、以下で作成する出力ファイルのパーミッションを"755"にするため。
   とりあえず、何も考えずに追加する。

   DBUmask 0022
   HTMLUmask 0022
   UploadUmask 0022
   DirUmask 0022

   HTMLPerms 0777
   UploadPerms 0777

 2. hottopic200.php.tmpl のダウンロード
   上記 Open MagicVox.net のサイトで、hottopic200.php.tmpl をダウンロードする。

 3. テンプレートの作成
   MT管理画面のテンプレート -> インデックスで、「テンプレートを新規作成」する。
   テンプレート名や出力ファイル名(拡張子は .php)は適当に決める。
    例:hot_entry.php

   20070604_01.jpg

   「テンプレートの内容」に、上記でダウンロードした hottopic200.php.tmpl の内容を
   コピー&ペーストする。

 4. hottopic200.php.tmpl の修正
   テンプレートにコピーした hottopic200.php.tmpl の内容を、自分の環境に合わせて
   以下のように書き換えた。

   --- 14行目あたりから ---
   // 過去 n 日間のログを集計する
   $nDivDay  = 7;

   // 上位 n 件を集計する
   $nTopEntry = 5;

   // ログファイルのディレクトリパス
   $szLogDir  = '/home/capsule-net/log';

   // 集計結果の出力ファイルパス
   $szOutput  = '/home/capsule-net/www/bitmap/output_entry.php';
   
   --- 113行目あたりから ---
   /******** エントリ1つの成形 ********/ $ret = <<<MYHTMLSAFEOUTPUT
   <li>
   <font color="#660000">第{$entry['Ranking']}位</font>:
   <a href="{$entry['EntryPermalink']}">{$entry['EntryTitle']}</a>
   ({$entry['ReferCount']} bit)
   </li>
   MYHTMLSAFEOUTPUT;
   /******** エントリ1つの成形 ********/

   --- 81行目あたりから ---
   // ユーザによって出力ファイル名が異なる場合は修正してください。
   return (preg_match
   ("/^\/bitmap\/archives\/\d{4}\/\d{2}\/\d{8}\_\d{2}\.php/", $url));

   ※自分のブログのエントリーファイル名に合わせて、Perlの正規表現で記述する。
     例:/bitmap/archives/2007/06/20070604_02.php

   --- 135行目あたりから ---
   /******** ページ全体の成形 ********/ $ret = <<<MYHTMLSAFEOUTPUT
   <ul>
   <li>- ここ一週間のアクセス状況 -</li>
   {$entry_list}
   </ul>
   MYHTMLSAFEOUTPUT;
   /******** ページ全体の成形 ********/

   上記修正後、テンプレートの再構築を行う。

   再構築後、このテンプレートファイル(hot_entry.php)のパーミッションが
   "755"になってるはず。
   もしも上記 1. の前準備を行ってない場合、パーミッションは"666"になる。
   これだと、後の処理で不具合が起きる。

 5. テンプレートの確認
   上記テンプレート再構築後、ブラウザでテンプレートにアクセスしてみる。
    例:http://www.capsule-net.com/bitmap/hot_entry.php

   以下のような感じで表示されたらOK。

   20070604_02.jpg

   同時に、出力ファイルが出来ていることも確認する。
    例:http://www.capsule-net.com/bitmap/output_entry.php

   出力がうまくいかない場合、上記 4. の項目で設定した正規表現を見直す。
   うまくいかない原因の多くは、この正規表現に問題があるため。

 6. エントリーのランキングを表示させたい部分に、上記出力ファイルを表示させる
   サイドバーに、以下のような感じで追加。

   <h2>人気エントリー</h2>
   <? include("<$MTBlogURL$>output_entry.php"); ?>

  追加したあとに再構築を行い、ランキングが表示されているか確認する。

 7. cron でランキングの集計を定期的に自動更新させる
   さくらインターネットの「コントロールバネル」にログインする。
   ログイン後、左側にある「CRON設定ファイルの編集」をクリック。

   20070604_03.jpg

   「新規項目の追加」をクリックする。

   20070604_04.jpg

   「実行するコマンド」と「実行させる日時」を設定する。
   当ブログの場合は以下のような感じ。
    実行するコマンド:
     /usr/local/bin/php -f /home/capsule-net/www/bitmap/hot_entry.php
   実行させる日時は、毎時間毎に設定した。

   20070604_05.jpg

   最後に「送信する」をクリックして保存する。

   20070604_06.jpg


以上で、毎時間毎にランキングが自動集計され、ランキングの表示が変動する。




< 次のエントリー  |  ページトップ  |  前のエントリー >



- コメント -

初めまして。人気ランキングで1つ分からないことがあり、
質問させて下さい><

正規表現の記述がどうしてもわからず、教えて頂きたいのですが、
yyyy/mm/entry-basename/index.php
↑の場合だとどのように記述すればよろしいでしょうか?
お手数ですが、宜しくお願いします。

投稿者:るる | WebサイトへGO! | 投稿日時:2009年06月15日 月曜日 13:50:20



>>るる さん

初めまして。

正規表現の件ですが、上記のentry-basenameは、実際にはどんな感じになるのでしょうか?
例えば、このentry-basenameが数値で桁数も固定、またはアルファベットで文字数も固定とか、
そういう規則性があると楽なんですが、規則性が全くなくて記事によってバラバラだと、
ちょっと自分には厳しいかもしれません・・。

投稿者:zero | WebサイトへGO! | 投稿日時:2009年06月15日 月曜日 16:11:50




- コメント投稿フォーム -




コメントが即時反映されない場合があります。
その場合は手動で反映させますので、反映されるまで少々お待ち願います。




- トラックバック -

このエントリーへのトラックバックURL:http://capsule-net.sakura.ne.jp/cgi/mtype/mt-tb.cgi/553

当エントリーへの"言及リンク"が無い場合、すぐには反映されません。
また、宣伝目的や単発記事ブログからのトラックバックは反映されません。



- アフィリエイト -

- さくらインターネット:レンタルサーバー -

- ロリポップ:レンタルサーバー -

- チャットレディ募集 -
  

- DTI サービス:アフィリエイトサービス -
DTIサービス アフィリエイト

- アマゾンコム:ベストセラー -

 
Copyright © 2006 - 2012 BITMAP All rights reserved.