2003年11月22日

MTで人気記事ランキングを。  このエントリーを含むはてなブックマーク

【はてなブックマーク】:  【カテゴリ】:[ MT ]

ずっと設置したいと思っていたmovabletypeのplugin、MTMostVisitedの設置にやっと成功した。このプラグイン、簡単に言えば「記事別アクセスランキング」。#BLOG一色政彦さんと、Living by the Animal Faith@KHさんのネタを見て激しく設置の欲望にかられた。トップページの左側の中ほどにあるやつがそれ。

現在のランキングを表示すると
ranking.jpg
↑こうなる

MT使ってて、これやりたくてもできなかったヒトは結構いるんじゃないかと思うので、僕の苦難の道を記そうと思う。参考になれば幸いだなあ。

スポンサードリンク

実はこのplugin、#BLOGさんとこで見つけて早速やってみたのだが、あっさり撤退。何度やっても上手く行かなかった。イライラ上昇。
で、調べるうちに分かったことがあった。

apacheのアクセスログを使うこのプラグイン、ここのサーバではアクセスログが上手く取れないことが分かった。
それなら作ってしまえ!というわけで、ログを取るCGIを作成して成功した。ちょっと感動。perlなんてさっぱりわからないけど、サンプルを引っ張ってきて見よう見真似で。なんとかなるもんだね。

それでは設置方法をば。

まず、このプラグインを導入する前に、Akira HangaiさんののApache::ParseLogというapacheログを解析するモジュールが必要です。何にも考えずにダウンロードします。リンク先の「source」ってとこ。

DLした「ParseLog.pm」は (MTのインストールディレクトリ)/extlib/Apache/
にアップロード(以下UL)。これで第一段階完了です。

次に本命のJeffrey Borlikさんのサイトに行き、The plugin is available (as a ZIP archive) hereと書かれたMTMostVisitedのプラグイン(zip)をDLする。解凍したら、mt-mostvisited.plをテキストエディタで開き、
my $logdir、my $root、my $filetype、my @searchfilesを

my $logdir = "/var/log/httpd";←apacheのログファイルのパス
my $root = "/blog/archives";←アーカイブファイルのパス
my $filetype = "html";
my @searchfiles = ("$logdir/access_log",←ログファイル名
"$logdir/access_log.1",
"$logdir/access_log.2",
"$logdir/access_log.3",
"$logdir/access_log.4",
"$logdir/access_log.5",
"$logdir/access_log.6");

こんなカンジで書き換えます。ここでapacheのログが取れないが為に、僕は何日も悩んだのですが、apacheのログがとれ、しかも一週間分とかに区切って出力してくれる優しいホスティング会社に加入している方なら迷わずapacheのログのパスを記述しましょう。

僕の利用してるホスティングサーバは厳密に言うとログは取れたんですが、切り分けをしてくれなかったので、仕方なく他のディレクトリに移動しようと思ったが、FTPで取得できない(SSIで接続しないと取得できない)上にTELNETの使い方が全く分からないというどうしようもない状態に陥った為、

自分でログを書き出すプログラムを作ってしまえ

ということを考えた。無謀。
それと、apacheのログって画像なんかにアクセスしても生成されるから一週間程度で物凄い量になるのでもっと簡単にしたいというのもあった。

というわけで、apacheのログの形式で書き出すアクセス解析のようなperlスクリプトを作ったってわけだ。なんかムダなことをやってるようだがあまり気にしない。つうかヒトのをパクリまくって作ったんですが。

アクセスログ取得スクリプト(へなちょこ)
↑ZIPで圧縮してます。念のため。

解凍したら、テキストエディタでaclog.cgi開こう。

変更するところは3個所

$aclog = 'access_log'; # logfilename
$max = '5000'; # logsize
$myself = 'https://cross-breed.com/';

$aclogはアクセスログが格納されるファイル名。
$maxはログの最大件数。これは好みで
$myselfは自分のルートのアドレスをフルパスで。

こんだけ。FTPでUPLOADしたら、aclog.cgiのパーミッションを755に。←これはサーバによって違うかも。

次に、空のテキストをaccess_logというファイル名で保存してこれもUPLOAD。
もうひとつ。log.gifという透明なGIFファイルを同じディレクトリにUPLOAD。

次に、Individual Entry Archiveに、以下のスクリプトを追加。


こんなカンジ。パスは各自適当に。

あ、そうそう。自前アクセスログスクリプトを設置したなら、上のmt-mostvisited.pl

my $logdir = "/var/log/httpd";
の部分をログファイルのパスを指定してください。
ウチのサーバだったら
"/home/(ユーザ名)/public_html/logs"
↑こんなカンジでかいてますね。

後は、一色さんとこのが非常に分かりやすく解説されてますが一応書いておくことにする。

MTの管理画面で新しいIndex Templateを作成する。
Templateの名前は 「Popular Ranking」
出力ファイル名は「(任意のディレクトリ)/ranking.html」
Templateの中身は



  1. (hit)

(Updated: )

Powered by MTMostVisited

こんなカンジで書いてます。ま、これも適当に。

そしてMain Indexの中の任意の場所に以下のコードを。

これをリビルドして完了。

うまく行きましたか?
間違いや指摘がありましたら、やさしく教えてくださいね。よろしくです。

スポンサードリンク

※このサイトはさくらインターネットのサーバを利用しています。

■gi(ギィー)福岡浄水通りの絣(かすり)と手作り雑貨のセレクトショップ
↑サイト内紹介記事
【PR】BTOパソコンの先駆者 FRONTIER
投稿者 ayu : 2003年11月22日 00:39 | コメントを読む | このサイトを印刷
このカテゴリの最新記事
他サイトよりの参照関連記事(トラックバック)
この記事のトラックバック用URL:
 
※当該記事にリンクのないトラックバックは削除することがあります。トラックバックについてを参考にして下さい。
記事タイトル : 記事のランキングを表示する 2( [Plog ] さんの記事より)

概要 : 私の環境では、Apacheのログを見れないようなので、この方法だとランキングを表示させることは、困難なようです。 しかしながら、CROSSBREEDさんのBlogによる�...
日付 : 2003.11.25
記事タイトル : 人気記事ランキング表示( [〓 鋼鉄の拳 〓 ] さんの記事より)

概要 : インデックスにコメントアクセスランキングを表示してみました。 結構苦労しましたよ(;´Д`) 詳細はExtendにて・・...
日付 : 2004.03.14
記事タイトル : MT 人気記事ランキング AAA!CAFE( [DEFAULT ] さんの記事より)

概要 : 人気記事ランキングと言うのをやってみたくなったのでいろいろ検索してみた。 まだ出来ていないので、今までやったメモだけ残しておく。 AAA!CAFEのapacheのアクセスログを使うことはちょっとだけ考えてすぐにやめた。 検索してみつけた、CROSS BREEDさんの「apacheのログ...
日付 : 2004.04.07
記事タイトル : MT-Plugins( [Sweet Melancholy Days. ] さんの記事より)

概要 : 今回導入しようと思ったプラグイン。 Supplemental Calendar Tags カレンダーを複数表示。 [参考] [E`] M::T > カレンダーを...
日付 : 2004.08.11
記事タイトル : カスタマイズ失敗記( [caramel*vanilla ] さんの記事より)

概要 : いつもカスタマイズの成功ばかり書いてるのでたまには失敗した記録も残しておきます。...
日付 : 2004.10.02
記事タイトル : アクセスランキング( [Mamo-Dead 4.0 ] さんの記事より)

概要 : 「aclog.cgi」も「Individual Entry Archive」に仕込んだJavascriptも上手く動いているようで、アクセスログ自体は出力されて...
日付 : 2004.11.10
記事タイトル : 人気記事Top10( [Diary::Weblog ] さんの記事より)

概要 : 「人気記事Top10」を前々からしてみたかったのですが、 MTで人気記事ランキングを。:(CROSSBREED クロスブリード!)blog:N@TURE BRA...
日付 : 2004.11.28
記事タイトル : 人気ページランキングをサイドバー.jpで!( [*vitalage*blog ] さんの記事より)

概要 : サイドバー.JPというサービスで、ブログ内のどのエントリが人気か、ランキングをと...
日付 : 2005.01.03
記事タイトル : EUCでの人気記事ランキング( [Project MultiBurst ] さんの記事より)

概要 : 「人気記事ランキング」というのを前々からやってみたかったんですが、 やっと実現し...
日付 : 2005.05.01
記事タイトル : 人気記事Top10( [Diary::Weblog ] さんの記事より)

概要 : 「人気記事Top10」を前々からしてみたかったのですが、 MTで人気記事ランキングを。:(CROSSBREED クロスブリード!)blog:N@TURE BRA...
日付 : 2005.06.22
記事タイトル : 人気記事Top10( [Diary::Weblog ] さんの記事より)

概要 : 「人気記事Top10」を前々からしてみたかったのですが、 MTで人気記事ランキングを。:(CROSSBREED クロスブリード!)blog:N@TURE BRA...
日付 : 2005.06.22
記事タイトル : MTで人気記事ランキングを作ってみる( [月夜塚-2nd-Blog ] さんの記事より)

概要 :  Blogで色々エントリーしてると「いったいどのエントリーがよく読まれてるんだろう」という更新している者としての疑問にぶつかるわけだけど、その疑問を簡単に解決し...
日付 : 2005.11.12
記事タイトル : 人気記事Top10( [Diary::Weblog ] さんの記事より)

概要 : 「人気記事Top10」を前々からしてみたかったのですが、 MTで人気記事ランキングを。:(CROSSBREED クロスブリード!)blog:N@TURE BRA...
日付 : 2006.01.22
記事タイトル : MTで人気記事ランキングを作る!( [low level life ] さんの記事より)

概要 : MTで人気記事ランキングを作ってみました(現在トップページで試験動作中)。 ただ、MT-MostVisitedはアーカイブファイル名がエントリーIDでなくてはい...
日付 : 2006.06.04
記事タイトル : 日々異常に増えるディスク使用量( [レベルがあがった! ] さんの記事より)

概要 : ここ最近、サーバーのディスク使用量が毎日のように数M単位で増えてて気持ちわるかっ...
日付 : 2023.09.30
この記事へのコメント

すみません。調子に乗って配布したスクリプトでしたが、不具合があることが判明しました。サーバによってはログをちゃんととれないことがあるようです。
修正してます。使ってみてください。

Posted by: ayu at 2003年11月24日 03:51

こんにちは~鋼鉄の拳~管理人のグレンデルです。
すみませんトラックバック不調で2回も送ってしまいました。
一回目のものは削除してください。
お願い致します。

Posted by: グレンデル at 2004年03月14日 17:52

>グレンデルさん
ご紹介ありがとうございました。
現在はこのプラグイン、当サイトでは使ってません。
というのが、記事ID=ファイル名のときにしか使えないのです。
ウチはphp化と共に日付をファイル名にしたので、どうしてもこの機能が使えなくなりました。

Posted by: 管理人ayu at 2004年03月14日 23:45

Cool article!!!

Posted by: dzwonki polifoniczne nokia at 2004年04月09日 08:04

Hmmmmm interesting !!!

Posted by: domy at 2004年05月10日 15:10

サプライズ!!!!
がはは。

Posted by: moriguchi at 2004年05月10日 17:16

サンプルのIndividual Entry ArchiveとPopular Rankingテンプレートの中身が同じなのは、気にしないとして、うちのサイトに設置したら擬似ログファイルが見当たらない旨のエラーがでてしまいました。$logdirと@searchfilesを直せといってくるのですが、フルパスで記述するとだめなのでしょうか。
こんなエラーです。

Error in MTMostVisited. A webserver log was not found. The plugin was looking for files in the "http://www.xillion.net/cgi-bin/mt/logs" directory, with filenames http://www.xillion.net/cgi-bin/mt/logs/access_log. Please double-check the location of your Apache webserver access log, and possibly change the $logdir variable, or any of the entries in the @searchfiles list.

因みにログディルはこんな感じで、
$logdir = "http://www.xillion.net/cgi-bin/mt/logs";
サーチファイルはこんな感じです。
@searchfiles = ($logdir."/access_log");

Posted by: kitano at 2004年05月24日 22:33

>kitanoさん
テンプレートのところ、全く気づきませんでした。ご指摘ありがとうございます。

サーチファイルの所が

@searchfiles = ($logdir."/access_log");

ではなく、

@searchfiles = ("$logdir/access_log");

なのではないでしょうか?

あと、logdirはhttpからのパスでいけるかどうかはサーバによって違うかもです。

Posted by: 管理人ayu at 2004年05月24日 23:12

>管理人ayuさん

早速の回答ありがとうございます。
httpからのパスはだめなようです。
/homeからのパスにしたらうまくいきました。
参考になりました。
うちのMovableTypeでも(勝手に)使わせてもらいます。

Posted by: kitano at 2004年05月25日 00:11

>kitanoさん
参考になったようでこの記事書いてよかったです。
今後ともよろしくです。

Posted by: 管理人ayu at 2004年05月26日 19:23

苦労のにじむ、このエントリーを参照し、MTMostVisitedプラグインの導入に挑みましたがあえなく撃沈。(笑)
代替案で解決(?)しましたが、参考になりました。ありがとうございましたー。

Posted by: junichi_y at 2004年11月29日 00:52

>junichi_yさん
phpの個別ファイル化をしたとたんこれが出来なくなったのですよ、実は。
代替案、良さそうですね。僕もやってみることにしますよ。

Posted by: 管理人ayu at 2004年11月30日 01:16

無料ゲーム関連サイトのための検索エンジンです。無料ゲームも設置しています。
http://www.twsunkom.com/p-vi/lin241.jpg

Posted by: 山左と一郎 at 2006年03月08日 16:40
是非この記事に対するコメントを下さい









名前、アドレスを次回から入力不要にする? 
(チェックを入れると次回書き込みに便利です)

コメントに返信があった場合メールで知らせる?(現在機能停止中)

※重複トラックバックの削除依頼のコメントは不必要です。こちらで消しますので。

BLOGPEOPLE
アンテナ(リスペクト巡回先)
現在アンテナ表示停止中
はてなアンテナに追加
姉妹サイト
オススメ(ハジメテの方)
BBS / ゲストブック
BBS
Links
powered
このブログのXML


powerd by sakura web







サイト内で迷ったらこちら

■よりぬきクロスブリード
※オススメ記事はコチラから。初めて来た方も是非。

■ランダムピックアップ
※サイト内でランダムに記事を表示します。(ランダムピックアップ設置方法はコチラ