SOHO MIND

人気記事ランキングを表示

category: - シップ @ 2004/10/09 6:06:02 PM

ブログのどのエントリーが多く読まれているのか、ランキングを表示する方法です。
MT-MostVisitedというプラグインを使わずに、CGIとJavaScriptを使います。
こちらの利点は
1.Apacheのログが必要ない。
2.過去全期間のランキングを表示できる。
3.リアルタイムで順位が上下する。再構築の必要なし。

デメリットは
1.リンクがJavaScriptを利用して作るので検索エンジン対策にはならない
2.JavaScriptがOFFだと表示されない
3.CGIを設置しなければならない。

では設置方法を。
MT=Movable Typeのインストールディレクトリ

下記URLからRankerのスクリプトファイルをダウンロード(Movable Type用をDL)
http://computer.shipweb.jp/soft/ranker.htm

MT/ranker 解凍するとrankerフォルダ配下にファイルが作成されるのでMTフォルダに移動。

[ranking.cgi] 1行目のPerlのパスを書き換える。
52行目の$code = ‘euc’;の[euc]の部分をMovable Typeで使用している文字コードにする。
シフトJISの場合’sjis’、EUCの場合’euc’、UTF-8の場合’noconv’
[ranking.cgi]を置き換えた文字コードで上書き保存しなおす。

rankerフォルダをMTフォルダ配下にアップロード
パーミッション書き換え

[ranking.cgi] SuEXECの場合:744 そうでない場合:755
[ranking.js] SuEXECの場合:644 そうでない場合:666

サーバーによって違う場合もあります。

Movable Typeにログインし、Individual Entry Archiveテンプレートを開く。

<body>と</body>の間に以下のタグを挿入。

<img src="<$MTBlogURL$>ranker/ranking.cgi?name=<$MTEntryLink$>&num=PP&type=image&file=<$MTEntryTitle$>">

個別ページの再構築をする。

次に、Main Indexテンプレートを開く。
ランキングを表示したい場所にidがrankingbodyのdivタグを挿入

<div id=rankingbody></div>

以下のスクリプトをどこでも良いので挿入。最後の方が良いと思います。
<SCRIPT TYPE="text/javascript">
var FILENAME = new Array();
var NUM = new Array();
var NAME = new Array();
</SCRIPT>

<SCRIPT TYPE="text/javascript” SRC="<$MTBlogURL$>ranker/ranking.js"></SCRIPT>
<SCRIPT TYPE="text/javascript">

function ranking(s,e,d){
if (s==""){s=0;};
if(e==""){e=8;}
var StartN=s;var EndN=e;
if (StartN<0){StartN=0;}if(EndN>FILENAME.length){EndN=FILENAME.length;}
pagetext = “<div style=’text-align:center;’>";pcounter=1;
for(i=0;i<FILENAME.length;i+=8){
if (StartN==i){
pagetext+=" "+pcounter+" ";
}else{
pagetext+=" <a href=’javascript:ranking("+i+","+(i+8)+");’>"+pcounter+"</a>";
}
pcounter++;
}
pagetext += “</div>";
var texthead,textbody,textfoot,headtext;textbody="";
objrank = document.getElementById("rankingbody");
for(i=StartN;i<EndN;i++){
ntext = “("+NUM[i]+")"; //ヒット数を表示する場合。しない場合はntext = “";に置き換えてください。
textbody+=(i+1)+" <a href=’"+NAME[i]+"‘>"+FILENAME[i]+"</a>"+ntext+"<br>";
}
objrank.innerHTML = textbody+pagetext;
}
</SCRIPT>
<SCRIPT TYPE="text/javascript">ranking(0,8,"");</SCRIPT>

Main Indexテンプレートを再構築。

どれかのエントリーを表示してみます。
その後、ブログのトップページを表示してランキングが表示されれば成功です。

もしうまくいかない場合はコメント欄で質問してください。わかる範囲でお答えします。

MT-MostVisitedプラグインをつかった人気記事ランキングの表示は一色政彦さんが以下の記事で書いてくださっていますので参考になさってください。
MTで人気記事ランキングを作る

17 queries. 0.046 seconds. Powered by WordPress ME