Movable Type 備忘録

 アクセスランキング・プラグイン(jquery.pagerank.js)

こんばんわ^^

先日ご連絡したように、こちらのAjaxでアクセス・ランキングを表示する4でご紹介してる、jQuery 用のアクセスランキング・スクリプトをプラグイン化してみました。

プラグイン化に伴って少し使い方が変更されてます。

使い方

使い方はカンタンです。

  1. 以下の ZIP ファイルをダウンロードして、各自の環境に合わせてアップロードしてください。

    そして、jquery.pagerank.js 内の 19 行目を、アップロード先の PHP スクリプト( rank_config.php がある場所 )の URL に変更します。

  2. ページアクセスランキングを表示したい場所に以下のコードを追加します。

    ランキング表示

    1. <div id="pagerank_viewer">
    2.     <script type="text/javascript">$('#pagerank_viewer').PageRank({blog_id:1, page_name:'ページタイトル', blog_url:'ブログ URL'});</script>
    3. </div>

    赤字の部分にランキング表示したいセレクタを指定します。
    青字の部分は以下のオプションを指定することができます。

    • blog_id

      ブログ ID を指定します。必須です。

    • blog_url

      ブログの URL を指定します。必須です。

    • page_name

      ページタイトルを指定します。必須です。

    • exclude_page

      特定のページをランキングから除外したい場合に指定するオプションです。
      具体的には exclude_page:1 というように指定してください。

    • exclude_top

      トップページをデフォルトで除外したい場合には指定するオプションです。
      ですが、トップページはデフォルトで除外するようにしてます。ですので、除外したくない場合に指定してください。具体的には exclude_top:0 というように指定します。

    • ranking_max

      上位何件分をランキング表示するか指定するオプションです。デフォルトでは上位 15 件分表示されます。

    • ranking_type

      ランキング表示形式を指定するオプションです。以下の表示形式を選択することがdけいます。

      • カウント非表示(0)
      • カウンタ表示(1): デフォルト
      • パーセント表示(2)

      具体的には ranking_type:2 というように指定してください。

    • enable_cookie

      クッキーの有効/無効を指定するオプションです。デフォルトではクッキー有効(1)です。
      クッキーを無効にしたい場合には enable_cookie:0 というように指定します。クッキーを無効にしてしまうと、アクセスの度にカウントされます。

  3. HTML ヘッダ中に以下のコードを追加します。

    HTML ヘッダ

    1. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
    2. <script type="text/javascript" src="http://●●●.com/js/jquery.pagerank.js"></script>

    青い時の部分を各自の環境に合わせて変更します。

以上です。
よかったら使ってみてください (●´∀`●)

 Trackback Pings(0)

No trackbacks found.

 Comments(14)

#1: Posted by okimo @ October 11, 2008 [REPLY]
user-pic

bzbell さん

はじまして。いつも参考にさせていただき、ありがとうございます。
以前からアクセスランキングも使わせていただいてるのすが、
今回のプラグインで不明な点があるので質問させていただきます。

「page_name:ページタイトル」となっていますが、具体的に何を入れたらよいのでしょうか。

#2: Posted by Author Profile Page bzbellからokimoへの返信 @ October 11, 2008 [REPLY]
user-pic

>>1 okimo さん

こんばんわ^^

> 「page_name:ページタイトル」となっていますが、具体的に何を入れたらよいのでしょうか。

MT をお使いですか!?
エントリページなら <MTEntryTitle> を指定すればいいと思います。
各アーカイブページ(カテゴリ、月別ページなど)なら <MTArchiveLabel> を指定すればいいかなパチパチ
基本的にはアクセスされたページ名称を指定してください。
ただし、サイトタイトル名は含めないほうが良いと思いますテレテレ

#3: Posted by okimoからbzbellへの返信 @ October 12, 2008 [REPLY]
user-pic

>>2 bzbell さん
なるほど、そういうことですね。

なかなかうまくいかないので、もう一度挑戦してみます!
ありがとうございました。

#4: Posted by Author Profile Page jupi @ November 6, 2008 [REPLY]
user-pic

こんにちは。はじめてランキングを設置しようと思います。

記事を参考にして設定した後、ランキング表示部分を確認したのですが、ローディング画像が表示されたままとなり、いつまで待ってもランキングが表示されませんでした。具体的な質問ができずに申し訳ないのですが、よろしければアドバイスをお願いします。

設置個所はhttp://www.jupi.jp/diary/
右サイドバー下方のブログパーツ(価格サイトランキング)の上でローディング画像がグルグル表示されているところです。

なお、設定した内容は次のとおりです。

---jquery.pagerank.js内の19行目のURL---
script_url:'http://www.jupi.jp/mt/js/pagerank/'// PHP スクリプトのアップロード先 URL

※pagerankフォルダアップロード済


---サイドバーのランキング表示部分に追加---
<div id="pagerank_viewer">
<script type="text/javascript">$('#pagerank_viewer').PageRank({blog_id:38, page_name:'<MTArchiveLabel>', blog_url:'http://www.jupi.jp/', ranking_max:10});</script>
</div><br>


---HTMLヘッダ中に追加---
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<script type="text/javascript" src="http://www.jupi.jp/mt/js/pagerank/jquery.pagerank.js"></script>


---パーミッションの設定---
pagerankフォルダ 755
phpファイル 705

※コアサーバ


(参考にした記事)
アクセスランキング・プラグイン(jquery.pagerank.js)---使い方1~3
http://bizcaz.com/archives/2008/10/04-002457.php
Ajaxでアクセス・ランキングを表示する4---設置の仕方4
http://bizcaz.com/archives/2007/11/23-215846.php

#5: Posted by Author Profile Page bzbellからjupiへの返信 @ November 6, 2008 [REPLY]
user-pic

>>4 jupi さん

こんばんわ^^
遅くなってすいません。

ご質問の件ですが、jupi さんのサイト拝見させてもらいました。
rank_view.php が応答してないようですね。
以下に考えられることを記します。

  • CORESERVER をお使いとのことですが、PHP スクリプトを CGI モードで動作させてますか!?
    CORESERVER のデフォルトでは PHP スクリプトはモジュールとして動作します。そうするとパラメータを渡すことができないなどの制約が伴います。その場合には pagerank/ フォルダ内に .htaccess ファイルを作成して以下をコピペしてみてください。

    AddHandler application/x-httpd-phpcgi .php
    
  • pagerank/ フォルダ内に lock_view/ というフォルダが存在してますでしょうか。
    そのフォルダが存在してると排他制御によりロックがかかりっぱなしになってしまいます。その場合にはフォルダを削除してください。

    本来なら CORESERVER ならもっとスマートな排他制御が可能なのですが、他のサーバに合わせて少し古い方法でファイルの排他制御を行ってるんですの。

  • 設置の前に圧縮ファイル中に同梱した index.html による表示確認されてますでしょうか。
    そもそもその表示ができない場合には、本サイトに設置しても表示できません。

こんなかんじでしょうかうぅ~ん
ご確認くださいぺこり

#6: Posted by Author Profile Page jupi @ November 6, 2008 [REPLY]
user-pic

お忙しいところお返事をいただきありがとうございました。まずはお詫びなのですが、大きな間違いをしていたようです。バリュードメインでドメインを取得したときに一緒に借りたサーバーはCORESERVERではなくXREAでした。すみませんでした。

今回教えていただいたものを試してみました。

1 pagerank/フォルダ内に.htaccessを作成し、AddHandler application/x-httpd-phpcgi .phpをコピペしてアプロードしたところ ローディング画像(グルグル表示)が出なくなりましたが、以前としてランキングは表示されませんでした。

2 pagerank/フォルダ内にlock_view/というフォルダはありません。

3 http://www.jupi.jp/mt/js/pagerank/index.php

圧縮ファイル中に同梱してあるindex.phpファイルのbody内を次のコードに書き換えてhttp://www.jupi.jp/mt/js/pagerank/index.phpを確認したところ、太枠で横長の長方形が表示されましたが、ランキングの内容は表示されませんでした。
<div id="pagerank_viewer">
<script type="text/javascript">$('#pagerank_viewer').PageRank({blog_id:38, page_name:'<MTArchiveLabel>', blog_url:'http://www.jupi.jp/', ranking_max:10});</script>
</div><br>

※上記作業を行った後、agerank/フォルダを確認したところ、blog38period.txtというファイルが生成されていました。

#7: Posted by Author Profile Page bzbellからjupiへの返信 @ November 7, 2008 [REPLY]
user-pic

>>6 jupi さん

PHP の CGI モードに関してはたぶん XREA でも同様だと思います。
それはさておき、表示側は問題解決のようですね。
今問題となってる原因はロギング側です。
表示後ロギングのスクリプトが実行されないと何も表示されません。
具体的には jquery.pagerank.js 内の 42 行目です。

でも今 jupi さんとこのサイト確認したところ実行されてますので表示できると思いますよワクワク

#8: Posted by Author Profile Page jupi @ November 7, 2008 [REPLY]
user-pic

いろいろとありがとうございます。

表示内容等を確認したところ次のような状況でした。

1 pagerank内にblog38data.txtファイルが生成されました。

2 blog38data.txtファイル内のソースは次のとおりです。
※ログは削除しました。by bzbell

3 サイドバーに次のように表示されました。
3
1<MTArchiveLabel>
14日間ログを集計します。

以上から、page_nameの設定を<MTArchiveLabel>ではなく、<MTEntries>~<$mt:EntryTitle$>~</MTEntries>に変更してみました。

(修正後のサイドバーのコード)
<MTEntries><div id="pagerank_viewer">
<script type="text/javascript">$('#pagerank_viewer').PageRank({blog_id:38, page_name:'<$mt:EntryTitle$>', blog_url:'http://www.jupi.jp/', ranking_max:10});</script>
</div></MTEntries>

すると次のように表示されました。
Warning: mkdir() [function.mkdir]: File exists in /virtual/hyousu/public_html/mt/js/pagerank/rank_view.php on line 94
3
1<MTArchiveLabel>
14日間ログを集計します。

この状態でランキングのデータがどのように表示されていくか様子をみればいいのかなと思いました。

#9: Posted by Author Profile Page bzbellからjupiへの返信 @ November 7, 2008 [REPLY]
user-pic

>>8 jupi さん

こんにちわ^^

page_name には記事中にも記してますように必須です。
ですので、ランキング対象とするすべてのページで指定するようにしてくださいね。
また修正後のサイドバーコードについてですが、MTEntries で回してしまうとループ回数分 ランキング用の JavaScript が実行されることになりますが…認識されてますかあせあせ

間違ってたらすいません…なのですが、jupi さんがやりたいことはページ名称を取得したいだけですよね!?
それでしたら、各テンプレート内で MTSetVar name="page_name" などとして、サイドバー内で MTGetVar name="page_name" としたらどうでしょふつう

ご参考まで。

#10: Posted by Author Profile Page jupi @ November 7, 2008 [REPLY]
user-pic

何度も申し訳ありません。やりたいことはご指摘のとおりページ名称を取得することです。

<$mt:EntryTitle$>を<MTEntries>~</MTEntries>で囲んで記事タイトルを表示しようとしましたがこれをやめて、教えていただいた方法でやってみることにして、ブログ記事テンプレートに<MTSetVar name="page_name">を追加し、ページタイトルのコードをpage_name:'<MTGetVar name="page_name">'に置き換えました。

表示を確認すると現段階のページタイトル4つ分のうち1つが表示されており、3つが表示されていませんでした。件数は4件すべて表示されていました。もしかするとこれからページタイトルを取得するものからうまく動作するのかもしれないと思い設定はそのままにして様子をみようと思います。

その他、最初に同包してあったindex.phpのcssコード(横幅や文字や背景のカラーコード等)をカスタマイズしてhead内に追加してスタイルを反映しました。また、rank_view.phpファイルの52行目に$s .= '<p style="text-align:center">ページアクセスランキング</p>';を追加してランキングのタイトルを表示しました。

#11: Posted by Author Profile Page bzbellからjupiへの返信 @ November 7, 2008 [REPLY]
user-pic

>>10 jupi さん

こんばんわ^^

ページタイトルで悩んでるようなら、以下のようにしてみてください。

  1. サイドバー内のランキング表示部を以下のように変更します。

    <div id="pagerank_viewer"><script type="text/javascript">$('#pagerank_viewer').PageRank({blog_id:<$MTBlogID$>, page_name:'', blog_url:'<$MTBlogURL$>'});</script>
    </div>
    

    そして再構築します。

  2. 次に jquery.pagerank.js 内の 22 行目に以下を追加します。

    opt.page_name = document.title.replace(' - 双極性障害と躁うつの大きな波', '');
    

    そしてファイル保存して元の場所にアップロードします。

以上でページタイトルを意識することがなくなりますパチパチ

#12: Posted by Author Profile Page jupi @ November 8, 2008 [REPLY]
user-pic

こんにちは。jupiです。

いろいろありがとうございます。

教えていただいた方法を設定してみました。ページタイトルを意識することがなくなりますという意味は記事名の代わりに強制的にサイト名を一律表示するということだったのですね。これだと記事名ではなくサイト名が繰り返し表示されるためページアクセスランキングとはいえないようです。

また、表示された記事名のリンク先をブログ記事のリンク先としたいのですが、すべてブログのメインページがリンク先になってしまうようです。

アクセスの多い記事名をカウント順に表示するランキングにしたいので、どこまでできるかわからないのですが、ページタイトルの取得、表示を記事名・記事リンク先とするようもう少し頑張ってみたいと思います。

#13: Posted by Author Profile Page bzbellからjupiへの返信 @ November 8, 2008 [REPLY]
user-pic

>>12 jupi さん

おはよございます^^

> 強制的にサイト名を一律表示するということだったのですね。

いいぇ、ページの TITLE タグを取得してサイト名称を削除するといったものですがあせあせ

> ページタイトルの取得、表示を記事名・記事リンク先とするようもう少し頑張ってみたいと思います。

はい。がんばってください。

#14: Posted by Author Profile Page jupi @ November 9, 2008 [REPLY]
user-pic

こんにちは。jupiです。

jQuery版スクリプトで設置しました。
ご指導をいただきありがとうございます。
これからもよろしくお願いします。

 Post a Comment

 

コメント用フィード