りえすけToo!トップページ りえすけ島ナンデモ日誌
  ナンデモ日誌 OldGameReview家 おみやげ屋 リンクの港 送信フォーム 掲示板

人気記事ランキング

カテゴリ:[Movable Type] — 2006年06月03日(土) 01:44 Posted by Riesuke

ここ数日、人気記事ランキングというのをつけようとしてmt-mostvisitedプラグインを必死にカスタマイズしてましたが、結局断念しました。phpモジュール化してる上に、どういう訳かファイル名を拾ってくれないんですよ。個別エントリーは"yyyy/mm/entry_basename.php"と至って普通なんですがね。やっぱしEntry_IDつけないとダメみたいですね。

という訳で、人気記事のランキングを表示する - Open MagicVox.netを試してみました。これはモジュール化等カスタマイズしまくってるMTユーザーにはうってつけ! Entry_IDに縛られない(最重要)、軽い、カスタマイズ超らくちん! ダウンロードしてtmplファイルをエディタで開き、設定を終えてから、まるごと中身をインデックステンプレートに貼り付け、再構築して出来上がり。導入から稼動まで約1.5時間、なんかあんなに苦労していた自分がバカみたいです。

Open MagicVox.netさんのところを熟読頂いた上で、我がXREAサーバーでのhottopic200.php.tmpl設定・カスタマイズを記述します。独自ドメイン・IDは各自書き換えで。

18行目過去n日間のログを集計するか

$nDivDay	= 5;

これはXREAの生ログが5日分しか保存されないからです。せめて7日にしてくれ。もし昨日のランキングとかにしたいなら$nDivDay= 1とかでもいいです。とにかくXREAでは5以下にしてください。7にしてあっても5日分しか集計されてませんので意味ないです。

21行目ログファイルのディレクトリパス

// $szLogDir= '/virtual/ID/log';

apatchの生ログが置いてある場所です。生ログが保存されてない場合はXREAのコントロールパネルから、生ログを保存するように設定してください。解析済ログが/public_html/log/に保存されているかもしれませんが、これはこのスクリプトでは使いません。

53-55行目

array_push ($ret, sprintf ("access_log.%d", $past));
array_push ($ret, sprintf ("access_log_%04d%02d%02d", $year, $month, $day));
array_push ($ret, sprintf ("access_log_%04d%02d%02d.gz", $year, $month, $day));

を以下に差し替え

if ($past == 0) {
array_push ($ret, sprintf ("独自ドメイン.log"));
}else{
array_push ($ret, sprintf ("独自ドメイン.%d.log",$past));
}

ここでログファイル名を取得しています。

81行目付近は個別アーカイブのファイル名のパターンマッチングですが、当方の個別エントリーパスは"/diary/archives/yyyy/mm/entry_basename.php"なわけですので、

"/^\/diary\/archives\/\d{4}\/\d{2}\/(\w+)\.php/"

としました。←設置稼動の1.5時間の大部分はこれのせい。正規表現は本当に奥が深いです。

そんなわけでメニューの中でひっそりこっそり稼動しています(来客数が少ないんで)。すばらしいスクリプトを作って頂き、ありがとうございます。xreaではcronが使えるので、あとで挑戦しようと思います。

2006.09.01追記
内容を少々修正しました。

この記事へのコメント

始めまして、こんにちは。
人気記事ランキングの設定を調べているうちに辿り着いてしまいました。

私もXREAさんで「見つけたーーー」という感じだったのですが、うまくいかないand解決できずなので助けて頂けると嬉しいです。

質問はあまりにも長いのでTBで失礼します。
記事先でもこちらでもコメント頂ければ幸いです。

宜しくお願いします。

2006年09月01日(金) 16:45 Posted by カズヲ

出張してコメントしてきました。
このスクリプトについては全然苦労してないので、記憶があやふやになってますた。

XREAのデフォルトでは生ログが保存されてないような気がしました(←忘れた)んで、まず生ログの設定が最初ですね。この記事も修正をしました。

2006年09月02日(土) 12:16 Posted by Riesuke@管理人

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

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

2009年06月15日(月) 13:53 Posted by るる

"/\d{4}\/\d{2}\/(\w+)\/index\.php"

これじゃあダメですかね…?
ものすごいそのまんま応用記述しただけですけど(^^ゞ

正規表現で検索するといろいろ出てくるので、それを参考に何度も試してみると良いと思います。
私も1時間30分くらいはみっちり試しました。
合ってるはずなのにうまくいかないってのが沢山ありまして、今の形に落ち着いたわけなんですが。

/\d{4}/\d{2}/(\w+)/index\.php

もしかしてこれでもいいのかな?
実はあんまり自分もよく分かってないんで、色々試してみてくださいな。

2009年06月16日(火) 00:42 Posted by Riesuke@管理人

この記事へコメントを書き込む




cookieに貴方の情報を保存しますか?



トラックバック

このエントリーのトラックバックURL:

» Movable Type 人気エントリーランキング from Movable Type 入門
期待させて申し訳ございませんが、まだ設定中です。 … というか表示できない(涙 ...

トラックバック時刻: 2006年09月01日(金) 16:45

» MTの人気記事閲覧ランキング from BlueBoxBlog
MTで、アクセスの多かった記事トップ10みたいなことができるプラグインや方法はな...

トラックバック時刻: 2007年02月22日(木) 03:16