MTで人気記事ランキングを。
ずっと設置したいと思っていたmovabletypeのplugin、MTMostVisitedの設置にやっと成功した。このプラグイン、簡単に言えば「記事別アクセスランキング」。#BLOG一色政彦さんと、Living by the Animal Faith@KHさんのネタを見て激しく設置の欲望にかられた。トップページの左側の中ほどにあるやつがそれ。
現在のランキングを表示すると
↑こうなる
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 $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個所
$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の中身は
- (hit)
(Updated: )
Powered by MTMostVisited
こんなカンジで書いてます。ま、これも適当に。
そしてMain Indexの中の任意の場所に以下のコードを。
これをリビルドして完了。
うまく行きましたか?
間違いや指摘がありましたら、やさしく教えてくださいね。よろしくです。
※このサイトはさくらインターネットのサーバを利用しています。
■gi(ギィー)福岡浄水通りの絣(かすり)と手作り雑貨のセレクトショップ
↑サイト内紹介記事
【PR】BTOパソコンの先駆者 FRONTIER
■トラックバックスパムフィルター「BanNoReferTb」は凄いです
■FeedBurner.jpが開始するらしいのでその前に使ってみた
■サイト内で迷った時はランダムピックアップで
■新手のblogランキング「feed meter」はオススメです
概要 : 私の環境では、Apacheのログを見れないようなので、この方法だとランキングを表示させることは、困難なようです。 しかしながら、CROSSBREEDさんのBlogによる�...
日付 : 2003.11.25
概要 : インデックスにコメントアクセスランキングを表示してみました。 結構苦労しましたよ(;´Д`) 詳細はExtendにて・・...
日付 : 2004.03.14
概要 : 人気記事ランキングと言うのをやってみたくなったのでいろいろ検索してみた。 まだ出来ていないので、今までやったメモだけ残しておく。 AAA!CAFEのapacheのアクセスログを使うことはちょっとだけ考えてすぐにやめた。 検索してみつけた、CROSS BREEDさんの「apacheのログ...
日付 : 2004.04.07
概要 : 今回導入しようと思ったプラグイン。 Supplemental Calendar Tags カレンダーを複数表示。 [参考] [E`] M::T > カレンダーを...
日付 : 2004.08.11
概要 : いつもカスタマイズの成功ばかり書いてるのでたまには失敗した記録も残しておきます。...
日付 : 2004.10.02
概要 : 「aclog.cgi」も「Individual Entry Archive」に仕込んだJavascriptも上手く動いているようで、アクセスログ自体は出力されて...
日付 : 2004.11.10
概要 : 「人気記事Top10」を前々からしてみたかったのですが、 MTで人気記事ランキングを。:(CROSSBREED クロスブリード!)blog:N@TURE BRA...
日付 : 2004.11.28
概要 : サイドバー.JPというサービスで、ブログ内のどのエントリが人気か、ランキングをと...
日付 : 2005.01.03
概要 : 「人気記事ランキング」というのを前々からやってみたかったんですが、 やっと実現し...
日付 : 2005.05.01
概要 : 「人気記事Top10」を前々からしてみたかったのですが、 MTで人気記事ランキングを。:(CROSSBREED クロスブリード!)blog:N@TURE BRA...
日付 : 2005.06.22
概要 : 「人気記事Top10」を前々からしてみたかったのですが、 MTで人気記事ランキングを。:(CROSSBREED クロスブリード!)blog:N@TURE BRA...
日付 : 2005.06.22
概要 : Blogで色々エントリーしてると「いったいどのエントリーがよく読まれてるんだろう」という更新している者としての疑問にぶつかるわけだけど、その疑問を簡単に解決し...
日付 : 2005.11.12
概要 : 「人気記事Top10」を前々からしてみたかったのですが、 MTで人気記事ランキングを。:(CROSSBREED クロスブリード!)blog:N@TURE BRA...
日付 : 2006.01.22
概要 : MTで人気記事ランキングを作ってみました(現在トップページで試験動作中)。 ただ、MT-MostVisitedはアーカイブファイル名がエントリーIDでなくてはい...
日付 : 2006.06.04
概要 : ここ最近、サーバーのディスク使用量が毎日のように数M単位で増えてて気持ちわるかっ...
日付 : 2023.09.30
すみません。調子に乗って配布したスクリプトでしたが、不具合があることが判明しました。サーバによってはログをちゃんととれないことがあるようです。
修正してます。使ってみてください。
こんにちは~鋼鉄の拳~管理人のグレンデルです。
すみませんトラックバック不調で2回も送ってしまいました。
一回目のものは削除してください。
お願い致します。
>グレンデルさん
ご紹介ありがとうございました。
現在はこのプラグイン、当サイトでは使ってません。
というのが、記事ID=ファイル名のときにしか使えないのです。
ウチはphp化と共に日付をファイル名にしたので、どうしてもこの機能が使えなくなりました。
Cool article!!!
Posted by: dzwonki polifoniczne nokia at 2004年04月09日 08:04Hmmmmm interesting !!!
Posted by: domy at 2004年05月10日 15:10サプライズ!!!!
がはは。
サンプルの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");
>kitanoさん
テンプレートのところ、全く気づきませんでした。ご指摘ありがとうございます。
サーチファイルの所が
@searchfiles = ($logdir."/access_log");
ではなく、
@searchfiles = ("$logdir/access_log");
なのではないでしょうか?
あと、logdirはhttpからのパスでいけるかどうかはサーバによって違うかもです。
Posted by: 管理人ayu at 2004年05月24日 23:12>管理人ayuさん
早速の回答ありがとうございます。
httpからのパスはだめなようです。
/homeからのパスにしたらうまくいきました。
参考になりました。
うちのMovableTypeでも(勝手に)使わせてもらいます。
>kitanoさん
参考になったようでこの記事書いてよかったです。
今後ともよろしくです。
苦労のにじむ、このエントリーを参照し、MTMostVisitedプラグインの導入に挑みましたがあえなく撃沈。(笑)
代替案で解決(?)しましたが、参考になりました。ありがとうございましたー。
>junichi_yさん
phpの個別ファイル化をしたとたんこれが出来なくなったのですよ、実は。
代替案、良さそうですね。僕もやってみることにしますよ。
無料ゲーム関連サイトのための検索エンジンです。無料ゲームも設置しています。
http://www.twsunkom.com/p-vi/lin241.jpg
はてなアンテナに追加