Movable Type 備忘録

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

こんばんわ^^

prototype で動作するアクセスランキングの最新版を作ってみました。
機能は以下の通りです。

  • prototype 1.6.0.3 で動作します。
    ※未確認だけど、それ以前のバージョンでも問題ないように思うのココロ。
  • 最大 7 日分のログを収集して、その集計結果をランキング表示します。
    たぶん、巷で配布されてるランキングと同様の表示のされ方だと思われまする。
  • 複数のブログを運営されてる場合、個々のブログ内のランキング表示、すべてのブログを合わせたランキング表示といったことが可能です。
  • JSON フォーマットでデータを取得するので、JavaScript 側で自由に加工することができます。

というかんじでしょうか( ̄∇ ̄)

[2010.04.12] 特定のページを除外したい場合のオプション名を間違って記載してました。

[2009.05.10] リファラ情報を JavaScript から転送するよう変更しました。

[2009.05.01] ランキング表示用のコードに不具合がありましたので修正しました。

[2009.04.07] 順位をデザインするためのクラス( rank_list_1st ~ rank_list_3rd )において、正しくマークアップされてなかったので修正しました。

[2009.03.28] ロギング開始実行時において prototype エラーが発生する不具合を対応しました。

[2009.03.22] prototype.pagerank.js 内に誤字がありましたので修正しました。

[2009.03.21] 任意のページタイトル名を指定できる( 以前のバージョンの機能復元 )よう対応しました。

ダウンロード

以下の場所からダウンロードできます。

  • prototype.pagerank.plugin-217.zip
  • ディレクトリ構成

    以下のようなディレクトリ構成として説明していきます。

    http://bizcaz.com/
    |
    +-- index.html            ★メインブログ
    |
    +-- blog1/
    |  +-- index.html       ★サブブログ1
    |
    +-- blog2/
    |  +-- index.html       ★サブブログ2
    |
    +-- js/
    |  +-- pagerank/        ★ランキングスクリプトアップロード場所
    |  |
    |  |   +-- parototype_pagerank.js
    |  |   +-- rank_post.php
    |  |   +-- rank_config.php
    |  |   +-- rank_deny.php
    |  |   +-- JSON.php
    |  |
    |  |   +-- log/      ★ログ格納場所
    |  |      +-- 01/ ★ブログ1用
    |  |      +-- 02/ ★ブログ2用
    |  |
    

    設置の仕方

    以下の手順で設置します。

    1. ランキングスクリプトのアップロード

      上記からランキングスクリプトをダウンロードして、js/ フォルダ毎サーバにアップロードします。アップロード先はどこでも構いません。各自の環境に合わせてアップロードしてください。
      ここでは、上記ディレクトリ構成のようにアップロードするものとして説明していきます。

    2. JavaScript の修正

      各自のサイトのページタイトルに合わせて prototype.pagerank.js 内の 30 行目を修正します。
      以下に主な例を記します。

      ページタイトル抜き出しの為のコード修正

      1. ■ページタイトルが「ページ名 - サイト名」の場合
      2. replace(' - サイト名', '')
      3.  
      4. ■ページタイトルが「サイト名 - ページ名」の場合
      5. replace('サイト名 - ', '')
      6.  
      7. ■ページタイトルが「ページ名:カテゴリ名:サイト名」の場合
      8. splite(':')[0]
      9.  
      10. ■ページタイトルが「サイト名:カテゴリ名:ページ名」の場合
      11. splite(':')[2]

      基本的には正規表現を使って、TITLE 属性のテキストからページ名だけを抜き出せれば OK です。分からないことがあればご連絡頂ければと思います。

      修正したら保存して所定の位置にアップロードします。

    3. HTML ヘッダ( <head>~</head> )に追加

      HTML ヘッダに以下の追加します。

      HTML ヘッダ追記

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

      青字の部分にはランキングスクリプトのアップロード先 URL で変更します。
      赤字の部分は prototype.js をロードする為の記述ですが、既にロード済みの場合には不要です。

    4. ランキング表示用コード埋め込み

      各テンプレート内に、ランキング表示したい場所に以下のコードを埋め込みます。

      ランキングコード埋め込み

      1. <div id="pagerank_viewer">
      2. <script type="text/javascript">
      3.     new PageRank('pagerank_viewer', {
      4.         blog_id :10,
      5.         blog_url :'http://bizcaz.com/',
      6.         script_url :'http://bizcaz.com/js/pagerank/',
      7.         /*
      8.          *▼オプション▼
      9.          */
      10.         include_all_logs:0,
      11.         hide_rank :0,
      12.         page_name :'',
      13.         exclude_top :1,
      14.         exclude_page :0,
      15.         ranking_max :10,
      16.         ranking_type :1,
      17.         enable_cookie :1,
      18.         target :''
      19.     });
      20. </script>
      21. </div>

      赤字の部分を必ず同一にする必要があります。
      また、各パラメータの詳細を以下に記します。

      • blog_id

        ブログ ID を指定します。必須です。
        基本的には複数のブログで利用する場合に影響するもので、必ず各ブログでユニークな ID であればどんな値でも構いません。ただブログ ID が重複しないので無難かと思うのココロ。

      • blog_url

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

      • script_url

        ランキングスクリプトのアップロード先 URL を指定します。必須です。
        上記ディレクトリ構成だと 'http://bizcaz.com/js/pagerank/' を指定します。

      • include_all_logs

        複数のブログでランキング表示している場合、統合したランキング表示したい場合に指定するオプションです。

        • 0: 個別ブログランキング表示モード( デフォルト )
        • 1: 全ブログランキング表示モード
      • hide_rank

        ログ収集だけ行って、ランキング表示はさせたくない場合に指定するオプションです。

        • 0: 通常モード( デフォルト )
        • 1: 非表示モード
      • page_name

        任意のページタイトルを指定するオプションです。
        通常は使うことはありませんが、場合によっては TITLE 属性以外のタイトル名で表示したいって時などにお使いください。

      • exclude_page

        特定のページをランキングから除外したい場合に指定するオプションです。

        • 0: 除外しない( デフォルト )
        • 1: 除外する
      • exclude_top

        トップページをランキングから除外したい場合には指定するオプションです。

        • 0: トップページ除外しない
        • 1: トップページ除外する( デフォルト )
      • ranking_max

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

      • ranking_type

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

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

        リンクの TARGET 属性を指定します。
        '_blank' や '_self' を指定することでクリック時に別ページで表示されるようになります。デフォルトは TARGET 属性なしです。

      • enable_cookie

        クッキーの有効/無効を指定するオプションです。クッキーを無効にしてしまうと、アクセスの度にカウントされます。

        • 0: クッキー無効
        • 1: クッキー有効( デフォルト )
    5. マークアップ

      実際に表示されるランキング一覧は以下のようにマークアップされてます。

      1. <ul id="page_rank" class="widget_list">
      2.  
      3. <li class="widget_list_item list_entry rank_list_eve">
      4.     <a title="ページタイトル" href="ページ URL" target="_blank">ページタイトル
      5.         <span class="right rank_list_1st">No 1. アクセスカウント</span></a></li>
      6.  
      7. <li class="widget_list_item list_entry rank_list_odd">
      8.     <a title="ページタイトル" href="ページ URL" target="_blank">ページタイトル
      9.         <span class="right rank_list_2nd">No 2. アクセスカウント</span></a></li>
      10.  
      11. <li class="widget_list_item list_entry rank_list_eve">
      12.     <a title="ページタイトル" href="ページ URL" target="_blank">ページタイトル
      13.         <span class="right rank_list_3rd">No 3. アクセスカウント</span></a></li>
      14.                                     :
      15.                                     :
      16. <li class="widget_list_item list_entry rank_list_eve">
      17.     <a title="ページタイトル" href="ページ URL" target="_blank">ページタイトル
      18.         <span class="right">No10. アクセスカウント</span></a></li>
      19. </ul>
      20.  
      21. <div class="rank_info">Range: 開始日-終了日: 収集期間<br />
      22.     Total Count: 総カウント数</div>

      そして、同梱してますサンプル( index.html )では以下のような CSS になっています。

      CSS

      1. #pagerank_viewer {
      2.     margin: 1em;
      3.     width: 460px;
      4.     border:5px solid #4c597f;
      5. }
      6. #pagerank_viewer p {
      7.     margin: 0;
      8.     padding: .2em;
      9.     color: #eee;
      10.     background-color: #4c597f;
      11. }
      12. ul#page_rank {
      13.     margin: 0;
      14.     padding: 0;
      15.     list-style: none;
      16.     background-color: #eee;
      17.     border: 1px solid #414e74;
      18. }
      19. ul#page_rank a,
      20. ul#page_rank a:link,
      21. ul#page_rank a:visited,
      22. ul#page_rank a:active,
      23. ul#page_rank a:hover {
      24.     color: #303;
      25.     text-decoration: none;
      26. }
      27. ul#page_rank li {
      28.     margin: 0;
      29.     padding: 0;
      30.     width: 100%;
      31.     line-height: 2;
      32. }
      33. ul#page_rank li a {
      34.     padding-left: .5em;
      35.     height: 100%;
      36.  
      37.     line-height: 2;
      38.     display: block;
      39.     border: 1px solid #e8e8e8;
      40. }
      41. ul#page_rank li a span.right {
      42.     padding: 0 .5em;
      43.     float: right;
      44.     font-weight: 700;
      45. }
      46. ul#page_rank li a span.desc {
      47.     display: block;
      48.     line-height: 1;
      49.     font-size: 80%;
      50.     font-weight: bold;
      51. }
      52. ul#page_rank li.rank_list_odd a {
      53.     background-color: #e4e4e4;
      54. }
      55. ul#page_rank li.rank_list_eve a {
      56. }
      57. ul#page_rank li a:hover {
      58.     background-color: #dedede;
      59.     border: 1px solid #dedede;
      60. }

    全ブログを対象としたアクセス・ランキング表示の仕方

    全ブログのアクセス・ランキングのケースを以下に記します。

    • メインブログで全ブログのアクセスランキング表示
    • 各サブブログでは個別のアクセスランキング表示

    上記のケースの場合、以下のように設置します。

    1. メインブログに、以下の全ブログ用アクセスランキング表示用のコードを埋め込みます。

      全ブログ用アクセスランキング表示

      1. <div id="grand_pagerank">
      2. <div id="grand_pagerank">
      3. <script type="text/javascript">
      4. $('#grand_pagerank').PageRank({
      5.     blog_id:10,
      6.     blog_url:'http://bizcaz.com/',
      7.     script_url:'http://bizcaz.com/js/pagerank/',
      8.     include_all_logs:1
      9. });
      10. </script>
      11. </div>

      ポイントは赤字のところです。

    2. 次に、各ブログに通常のアクセスランキング表示用のコードを埋め込みます。

      全ブログ用アクセスランキング表示

      1. <div id="grand_pagerank">
      2. <div id="book_pagerank">
      3. <script type="text/javascript">
      4. $('#book_pagerank').PageRank({
      5.     blog_id:11,
      6.     blog_url:'http://bizcaz.com/blog1/',
      7.     script_url:'http://bizcaz.com/js/pagerank/'
      8. });
      9. </script>
      10. </div>
    3. cron を使って各ブログのログファイルを 1 つのファイルにまとめます。
      具体的には以下のようなコマンドファイル( cmd.sh )を作成して、cron で定期的にコマンドファイルを実行するようにします。

      cd /home/user/www/js/pagerank/log
      find ./[0-9]*/ -name "data*" -exec cat "{}" \; > data00
      

      上記コマンドが実行されると、log/ フォルダ内に data00 というファイルが作成されます。

    除外したい IP アドレスの登録

    任意の PC からのアクセスをすべて除外( カウントに含めない )したい場合には以下のようにします。

    1. rank_deny.php をブラウザから実行します。

      http://●.com/js/rank_deny.php
      

      用途としては、自分自身のアクセスをカウントとして含めない・・・などです。
      また、除外する IP アドレスはすべてのブログで有効になります。

    以上です。

     Trackback Pings(0)

    No trackbacks found.

     Comments(56)

    #1: Posted by オーク @ March 25, 2009 [REPLY]
    user-pic

    bzbellさん、早速のprototype版の作成ありがとうございます。

    prototype1.6.0.3にて
    prototype.pagerank.plugin-212を導入してみました。
    log生成、pagerank/index.htmlでの表示は正常に行われるのですが、
    pagerank/index.htmlの表示の際にスクリプト・エラーが出ます。
    (BLOG本体ではhide_rankを非表示でテスト。現在はplugin自体を無効にしてます)
    エラー内容は下記の通りです。
    *****
    エラー: handler.call is not a function
    ソースファイル: http://www.mizunara.com/prototype.js
    行: 3966
    *****
    prototype1.6.0でも同様でした。
    インストール・マニュアルとの違いはjsディレクトリの代わりにscriptディレクトリ配下に
    pagerankディレクトリを置いている位です。
    logデータは残したままですので、http://www.mizunara.com/script/pagerank/index.html
    でテストできると思います。
    お気づきの点が有りましたらご教授をお願いします。
    またまたご面倒をお掛けしますが、よろしくお願いします。

    #2: Posted by Author Profile Page bzbellからオークへの返信 @ March 25, 2009 [REPLY]
    user-pic

    >>1 オーク さん

    こんばんわ^^

    エラー確認しました。
    どうやら Ajax Request 送信後エラーが発生してるみたいですね。
    で通信はできてるし、何だか勝手に!? エラーされちゃってるみたいな気がするあせあせ
    コードを読み返したところ特に問題なさそうなかんじなので、じっくり原因を追究しないとダメみたい。

    お手数おかけしました & 少しお時間ください。

    #3: Posted by オークからbzbellへの返信 @ March 27, 2009 [REPLY]
    user-pic

    >>2 bzbell さん
    ご面倒をおかけします。よろしくお願いします。

    #4: Posted by Author Profile Page bzbellからオークへの返信 @ March 28, 2009 [REPLY]
    user-pic

    >>3 オーク さん

    こんにちわ^^

    遅くなりましたが、prototype.pagerank.js を修正しましたのでご確認頂けたらと思いますもじもじ
    原因は Event.Observer にありました。

    #5: Posted by オークからbzbellへの返信 @ March 30, 2009 [REPLY]
    user-pic

    >>4 bzbell さん
    >>4 bzbell さん
    bzbellさん、ありがとうございました。
    バッチリ解決です。またまたお世話になりました。ぺこり

    #6: Posted by Author Profile Page bzbellからオークへの返信 @ March 30, 2009 [REPLY]
    user-pic

    >>5 オーク さん

    こんばんわ^^

    > バッチリ解決です。またまたお世話になりました。

    良かったですぅパチパチ
    今後ともどうぞよしなにぺこり

    #7: Posted by かお @ April 11, 2009 [REPLY]
    user-pic

    すいません、パーミッションは
    前バージョンと一緒でいいのでしょうか?
    ローダーは動いてるのですが
    全然表示されないんですしくしく

    サーバーはヘテルム使っております。
    ご指導よろしくお願いします。

    #8: Posted by Author Profile Page bzbellからかおへの返信 @ April 11, 2009 [REPLY]
    user-pic

    >>7 かお さん

    こんにちわ^^

    パーミッションは同じでいいのです。
    実際にサイトを見てないので何とも言えないのですが、たぶんサーバ側スクリプトが動作してないと思います。
    ヘテムルだとちょと気になるところはありますが、たとえばブログ ID が 1 だった場合、log/01/ というようにあらかじめフォルダを作成しても動作しませんか!?

    #9: Posted by かお @ April 11, 2009 [REPLY]
    user-pic

    すいませんヘテムルでしたね(汗
    フォルダを作ってみましたがダメでしたイヤイヤ
    諦めて前バージョンに戻します。
    ありがとうございました。ぺこり

    #10: Posted by Author Profile Page bzbellからかおへの返信 @ April 11, 2009 [REPLY]
    user-pic

    >>9 かお さん

    こんばんわ^^

    諦めちゃうんですか…そうですか。残念のほほん
    お力になれなくってすいませんぺこり

    #11: Posted by ヒロ @ May 1, 2009 [REPLY]
    user-pic

    はじめまして!
    prototype.pagerank.plugin-214を先ほど導入してみたんですが、表示がうまくいきません。

    LOGファイルは正常に取れていますが、サンプルのindex.html及びブログのサイドバーでは
    表示されません。

    サンプルINDEXは以下のURLです。
    http://game-hack.net/blog/js/pagerank/index.html

    ブログはMT4.25
    サーバーは自宅サーバー:OS Win Server2008でIIS7です。

    どこか記述等間違っていますでしょうか?
    お手数ですが、よろしくお願いいたします。

    #12: Posted by Author Profile Page bzbellからヒロへの返信 @ May 1, 2009 [REPLY]
    user-pic

    >>11 ヒロ さん

    こんばんわ^^

    すいません、不具合がありました。
    具体的には prototype.pagerank.js 内の 97 行目を以下のように修正して頂くか、新たに DL して頂けたらと思います。

    変更前
    elem.push(・・・
    変更後
    out.push(・・・
    
    上記を修正すれば表示されると思いますにこっ! ご確認くださいぺこり
    #13: Posted by ヒロからbzbellへの返信 @ May 2, 2009 [REPLY]
    user-pic

    >>12 bzbell さん
    こんばんわ!

    早々のご対応ありがとうございました。
    無事ランキング表示されました(^^)

    あと、個別記事のみログを取りたいのでheadの箇所は個別記事のみにつけていたんですが、
    ウィジェットとして登録しているのでランキング表示が個別記事のみになってしまいます。

    この状態で、除外したページにランキグのみ表示する事は可能でしょうか?

    #14: Posted by kazu @ May 2, 2009 [REPLY]
    user-pic

    はじめまして。kazuと申します。
    こちらのランキングシステムの設置を試みているのですが
    カウントとランキングが表示されません・・・。

    テストページでは、以下のように表示されているだけです。
    --------------------------
    Range: 2009/05/02-2009/05/02
    Count: 0/1Days
    --------------------------
    ちなみに、5月1日の修正版をアップロードするまでは
    この表示もありませんでした。

    ログファイルを生成していないようですので、私の設定に問題が
    あるとは思うのですが・・・
    ご教示頂けますと幸いです。

    #15: Posted by Author Profile Page bzbellからヒロへの返信 @ May 2, 2009 [REPLY]
    user-pic

    >>13 ヒロ さん

    こんにちわ^^

    > あと、個別記事のみログを取りたいのでheadの箇所は個別記事のみにつけていたんですが、
    > ウィジェットとして登録しているのでランキング表示が個別記事のみになってしまいます。
    >
    > この状態で、除外したページにランキグのみ表示する事は可能でしょうか?

    個別記事のみロギングして、他ページは表示だけ・・・ということですね。
    それでしたら以下のようにするといいと思います。

    <div id="pagerank_viewer"><script type="text/javascript">
    new PageRank('pagerank_viewer', {
    <mt:Unless name="entry_archive">exclude_page: 1</mt:Unless>
    });
    </script></div>
    

    上記はランキング・ウィジェットをカスタマイズした例になります。
    個別記事以外の場合だけ exclude_page オプションに '1' を設定されます。

    各テンプレート内でランキング・ウィジェットを mt:Include してるかと思いますが、再構築時にテンプレートのタイプがチェックされますので ヒロ さん の思惑通りになると思いますにこっ!

    #16: Posted by Author Profile Page bzbellからkazuへの返信 @ May 2, 2009 [REPLY]
    user-pic

    >>14 kazu さん

    こんにちわ^^

    応答が返って来ているので全体的なデータのやり取りはうまくいっていると思われます。
    また、kazu さんの使い方を見る限り、1 日分だけログ収集するということでよかったですか。
    ※rank_config.php 内の ROTATION_DAYS を '1' に変更してるかと思います。

    1 日というのが少し気になってますあせあせ

    1. 試しに rank_config.php 内の ROTATION_DAYS をデフォルト( 7 )に戻して、stat ファイルというのを削除して確認してみて頂けますか。正しく表示されるようなら、予想通り 1 日と指定したことによる rank_post.php の不具合ということになります。

    2. お使いのサーバの PHP 環境による問題かもしれません。
      rank_post.php では log/ フォルダを作成してその中にブログ ID 毎のフォルダを動的に作成します。 このフォルダ作成ができないとログ収集もされないし、表示も 0 件のままとなります。 どちらのサーバをお使いですか!?

    以上ご確認くださいぺこり

    #17: Posted by kazuからbzbellへの返信 @ May 2, 2009 [REPLY]
    user-pic

    >>16 bzbell 様

    ご返答ありがとうございます。
    KAZUです。

    ROTATION_DAYS を '1' に変更いたしましたが、特に変化はないようです。
    また、statファイルというものが見当たらなかったのですが、このファイルも
    自動で生成されるものなのでしょうか?
    今現在、最初にアップロードしたファイル以外に増えたファイルはありません(笑)

    サーバーはクララオンラインのFPSサーバーを利用しています。
    PHPの環境は以下となっております。
    http://www.kenkogaku.com/info.php

    ランキング表示用テストページは以下になります。
    http://www.kenkogaku.com/js/pagerank/index.html

    以下のテスト記事に解析用ソースをはりつけています。
    http://www.kenkogaku.com/guide-diet/post.php
    (18行目あたりになります。)

    パーミッションも777にしたり、755にしたりと
    色々と試してみましたが上手くいきません。

    ちなみに、以下のバージョンのprototype版は動作いたしました。
    http://bizcaz.com/archives/2007/11/23-215846.php

    何か原因は考えられますでしょうか・・・。

    #18: Posted by ヒロからbzbellへの返信 @ May 2, 2009 [REPLY]
    user-pic

    >>15 bzbell さん
    こんばんわ!

    なるほど!そう言う方法があるんですね。勉強になります!
    MTUnless を使ってカウントの取得制御は出来ました!
    ありがとうございました(^^)

    ただ、記事編集時のプレビューのページまでカウントされてしまいますが(^^;
    盲点でした・・・URLでの制御が出来れば・・・

    #19: Posted by Author Profile Page bzbellからkazuへの返信 @ May 2, 2009 [REPLY]
    user-pic

    >>17 kazu さん

    > ROTATION_DAYS を '1' に変更いたしましたが、特に変化はないようです。

    いえ、'1' に変更するのではなく、デフォルトである '7' に変更してください…とお願いしたのですがあせあせ

    > …statファイルというものが見当たらなかったのですが…

    分かりました。
    明らかに PHP の問題と思われまするのほほん

    > PHPの環境は以下となっております。
    PHP 4.3.2 だと自動的にフォルダが作成できない( リカーシブに )かもあせあせ
    kazu さんご自身で以下のようにフォルダを作成して確認してみてください。

    1. pagerank/ フォルダ内に log/ フォルダ作成
    2. pagerank/log/ フォルダ内にブログ ID に該当するフォルダ作成
      たとえば、ブログ ID=1 の場合には、01/ フォルダを作成し、ブログ ID=42 の場合なら 42/ フォルダというように作成します。

    まとめると、rank_post.php 内では PHP の機能を使って階層的なフォルダを作成するのですが、kazu さんの PHP 環境では階層的なフォルダを動的に作成することができないんだと思います。
    なので、予めフォルダを用意してあげることでログ収集 & 表示が可能になるのでは…と思います。
    ご確認くださいぺこり

    #20: Posted by Author Profile Page bzbellからヒロへの返信 @ May 2, 2009 [REPLY]
    user-pic

    >>18 ヒロ さん

    > ただ、記事編集時のプレビューのページまでカウントされてしまいますが(^^;
    > 盲点でした・・・URLでの制御が出来れば・・・

    そうですねぇ。
    それは MT の仕様上しょうがないですねあせあせ
    たとえば、mt.cgi が含まれた URL を弾くことはできます。
    その場合には prototype.pagerank.js 内 の 48 行目を以下のように変更します。

    if (op.exclude_top && op.blog_url == location) include = 0;
    if (-1 != location.search(/mt\.cgi/i)) include = 0;
    

    上記はトップページ、および MT のインストール先 URL の場合にはロギングを行わないようにする処理になります。
    これならプレビュー時においてはログ収集対象外にされると思われまする。
    ご確認くださいもじもじ

    #21: Posted by ヒロからbzbellへの返信 @ May 2, 2009 [REPLY]
    user-pic

    >>20 bzbell さん
    こんばんわ!

    やっぱり仕様上仕方ないんですね(^^;
    教えて頂いたスクリプトをprototype.pagerank.jsに記述してみましたが、駄目でした・・・

    ログには
    http://game-hack.net/blog/2008/09/mt-preview-4c317c7b386fa8633dd0d0d7ce02d76ca467fab2.html?184456

    http://game-hack.net/blog/2008/07/mt-preview-79f475f732e23399e73ee32ed0c434dec4444c29.html?185358

    の様になります。
    URLのmt-previewを含むアドレスを対象外にする事は可能でしょうか?

    お手数ですがよろしくお願い致します。

    #22: Posted by Author Profile Page bzbellからヒロへの返信 @ May 2, 2009 [REPLY]
    user-pic

    >>21 ヒロ さん

    あっごめんなさいあせあせ
    mt.cgi じゃなくって mt-preview なんですね。
    では、以下のように変更してください。

    if (op.exclude_top && op.blog_url == location) include = 0;
    if (-1 != location.search(/mt-preview/i)) include = 0;
    
    わたしあまりプレビューって使ってないのでてっきり mt.cgi かと思ってました。 ご確認くださいぺこり
    #23: Posted by ヒロからbzbellへの返信 @ May 2, 2009 [REPLY]
    user-pic

    >>22 bzbell さん

    ありがとうございます。変更してみたんですが・・・・
    う~ん、mt-previewにしてもログを取られてしまいます~(^^;

    #24: Posted by kazuからbzbellへの返信 @ May 2, 2009 [REPLY]
    user-pic

    >>19 bzbell さん

    お世話になります。KAZUです。

    /log/フォルダに手動でidのフォルダを作成いたしましたが
    やはり何も変化が無いようです(^^;
    ちなみに、ログ収集期間の設定は1ではなく7にしておりましたが
    間違えて1とレスしてしまいました・・・。

    PHPのバージョンの問題ということで、どうしようも無いようですね・・・。
    旧バージョンを使用させて頂こうと思います。
    ありがとうございましたm(_ _)m

    #25: Posted by Author Profile Page bzbellからヒロへの返信 @ May 2, 2009 [REPLY]
    user-pic

    >>23 ヒロ さん

    > う~ん、mt-previewにしてもログを取られてしまいます~(^^;

    えっ!? そんなはずはないんですがあせあせ
    ウチでも確認したところちゃんと弾いてるようですよ。

    #26: Posted by ヒロからbzbellへの返信 @ May 2, 2009 [REPLY]
    user-pic

    >>25 bzbell さん
    すいません、他のPCからアクセスして確認したら問題ありませんでした(^^;
    いろいろとありがとうございました!

    非常に助かりました(^^)

    #27: Posted by よっしー @ May 3, 2009 [REPLY]
    user-pic

    こんばんは、はじめましてよっしーと申します。

    このたびこちらのアクセスランキングを設置させていただき
    どうにかこうにか表示もされるようになったのですが
    どうしてもランキング表示に
    ブログの記事名 - ブログのタイトル hit数
    といった具合で表示されるのですがこれを
    ブログの記事名 hit数といった具合に
    ブログのタイトルを抜くことはできますでしょうか?

    いろいろ試してみたのですがどうしてもわからず
    ご教授いただければと思います。
    お手数をおかけしますがよろしくお願いいたします。しくしく

    #28: Posted by Author Profile Page bzbellからよっしーへの返信 @ May 3, 2009 [REPLY]
    user-pic

    >>27 よっしー さん

    こんばんわ^^

    よっしーさんのサイトのブログ記事名( TITLE )は以下のようなフォーマットでよいですか!?

    ブログの記事名 - ブログのタイトル
    

    それでしたら、prototype.pagerank.js 内の 32 行目によっしーさんとこのサイト名称で変更していただければ期待する表示になると思いますにこっ!
    ご確認ください。

    #29: Posted by よっしーからbzbellへの返信 @ May 3, 2009 [REPLY]
    user-pic

    >>28 bzbell さん

    サイトのブログ記事名のフォーマットで気がつきました。
    思うような表示にできそうです。
    大変迅速なお返事でとても助かりました。
    ありがとうございました!
    またこのような素晴らしいプラグインもありがとうございますぺこり

    #30: Posted by ymrhs @ May 7, 2009 [REPLY]
    user-pic

    bzbell さん
    アクセスランキング・プラグイン の開発ありがとうございます!
    設置もでき、カウントもとれているようなのですが、、

    5-2
    > 次に、各ブログに通常のアクセスランキング表示用のコードを埋め込みます。

    この記述をしているところで JS エラーが出てしまいます。しくしく
    --
    $("#book_pagerank") is null
    [Break on this error] $('#book_pagerank').PageRank({
    --

    コードはブログ記事のテンプレートに記述しました。
    サンプルは以下のようになっていましたが、閉じタグが足りないので
    <div id="grand_pagerank">
    <div id="book_pagerank">

    「grand_pagerank」は削除したり、そのままでもやってみたりしていますが
    解決しません..
    確認は Firefox3.7 で Firebug を使っています。

    初歩的な質問で恐縮です。
    何か足りなさそうなところがあればご教授いただけると幸いです。

    #31: Posted by Author Profile Page bzbellからymrhsへの返信 @ May 7, 2009 [REPLY]
    user-pic

    >>30 ymrhs さん

    こんばんわ^^

    ご質問の件ですが、ymrhs さんは jQuery 版をお使いということでよいですか!?

    サンプルのコードにミスがありました。
    jQuery のコンフリクト対策したコードになってなかったので、対応したものを UP( ver2.21 )しましたので改めて DL して頂くか、テンプレート内に埋め込んだコードを以下のように変更してください。

    <div id="pagerank_viewer">
    <script type="text/javascript">	j$('#pagerank_viewer').PageRank();</script>
    </div>
    

    以上ご確認くださいぺこり

    #32: Posted by ymrhsからbzbellへの返信 @ May 8, 2009 [REPLY]
    user-pic

    >>31 bzbell さん
    早速のご返信ありがとうございます。ぺこり

    > ご質問の件ですが、ymrhs さんは jQuery 版をお使いということでよいですか!?
    jQuery 版ではなくこちらの prototype 版を使わせていただきました。
    (prototype.pagerank.plugin-215.zip をダウンロードしました)

    分かりました!私の勘違いでした。。
    お手数おかけしてホントすみません。

    「全ブログを対象としたアクセス・ランキング表示の仕方」というのを
    読み飛ばしてサンプルを記述していました。
    今回は1つのブログだけに使っているので、記述の必要がなかったのですね。
    勝手に「この記述でログをとっているのかなと」思い込んだりもしていました。
    恥ずかしい限りです。かたじけないです。


    ご親切にしていただき、ありがとうございました!

    #33: Posted by Author Profile Page jupi @ May 9, 2009 [REPLY]
    user-pic

    こんにちは。
    いつも参考にさせていただいております。

    prototype.pagerank.plugin-215の導入に挑戦したところ、RangeとCountは表示されましたが、logファイルが取得できませんでした。

    (現在の表示)
    -------------------------------------------
    Range: 2009/05/03-2009/05/09
    Count: 0/7Days
    ------------------------------------------

    これまでのコメントを参考にして次のとおり確認しましたが、解決しませんでした。

    1 logフォルダにブログIDフォルダを追加しました。
    log/01フォルダ

    2 パーミッションを設定しました。
    フォルダ755 phpファイル644 jsファイル644

    ブログはMT4.25、サーバーはXERAです。

    ブログURL
    http://www.jupi.jp/

    スクリプトURL
    http://www.jupi.jp/js/pagerank/

    サンプルURL
    http://www.jupi.jp/js/pagerank/index.html
    (ブログには右サイドバーに設置)

    どのように対処すればよろしいかご教示いただければ幸いです。
    お忙しいところ申し訳ありませんが、よろしくお願いします。あせあせ

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

    >>33 jupi さん

    こんにちわ^^

    XREA をお使いとの事ですが、ウチも CORESERVER を使ってまして、PHP スクリプトを使用する際にはセキュリティの関係上ちょと小細工が必要になります。
    pagerank/ フォルダ内に .htaccess を作成してその中に以下を記入してください。

    AddHandler application/x-httpd-phpcgi .php
    

    通常 PHP スクリプトはモジュールモードで動作します。
    このモードだとパフォーマンスに優れますが、PHP スクリプトに対してパラメータを渡すことができません。なので、特定のフォルダ内( .htaccess を置いたフォルダ配下 )の PHP については CGI モードで動作させる必要があるわけですが・・・ご存知でしょうかやあ!
    ご確認くださいもじもじ

    #35: Posted by Author Profile Page jupi @ May 9, 2009 [REPLY]
    user-pic

    早速のお返事ありがとうございます。

    .htaccessファイルが必要だったことをすっかり忘れていました。

    おかげさまでlogファイルを生成できるようになりました。

    大変助かりました。ぺこりぺこり

    #36: Posted by さとる @ May 21, 2009 [REPLY]
    user-pic

    管理人さま はじめまして。
    各プラグイン、たいへん活用させていただいています。

    今回のアクセスランキングプラグインですが、ログファイルが生成されず、上記jupiさんと同じような状況になり悩んでいます。
    使っているバージョンは、prototype.pagerank.plugin-217になります。
    個別IDのフォルダを作り、パーミッションは各数値に変更して試しましたが変化はありませんでした。

    サーバはさくらインターネット(スタンダードプラン)なのですが、やはりPHPとサーバの相性に問題があるのでしょうか・・・?調べてみたところ、さくらのPHP については CGI モードで動くみたいです。

    CORESERVERと同じようにhtaccessで対処できると助かるのですが・・。
    何か良い方法をご存じでしたらご教授いただけないでしょうか。

    なにとぞ宜しくお願いします。

    #37: Posted by Author Profile Page bzbellからさとるへの返信 @ May 23, 2009 [REPLY]
    user-pic

    >>36 さとる さん

    こんにちわ^^

    さくらインターネットでしたら友達が使用してますし、わたしも先ほど確認したところ普通に利用できましたにこっ!
    ただし、さくらインターネットでは PHP のバージョンを選択することができますが、わたしは PHP5( PHP 5.2.8 ) を選択しています。

    たとえば pagerank/ フォルダを http://user.sakura.ne.jp/ 配下にアップロードしたと仮定すると、サンプルページ( pagerank/index.html )内のコードは以下のようになります。

    <div id="pagerank_viewer">
    <script type="text/javascript">
    new PageRank('pagerank_viewer', {
    /*
    *▼必須▼
    */
    blog_id      :1,
    blog_url     :'http://user.sakura.ne.jp/',
    script_url   :'http://user.sakura.ne.jp/pagerank/'
    });
    </script>
    </div>
    

    php.ini の編集など、特に小細工なく使用できますのでご確認頂けたらと思いますぺこり

    #38: Posted by satoru @ May 26, 2009 [REPLY]
    user-pic

    bzbellさん

    こんにちは。ご返答&ご確認ありがとうございます!

    うーん、SAKURA環境だと問題なく使えるんですねー・・。
    私の環境をもう一度確認してみます。

    お手数をお掛けしました どうもありがとうございました!

    #39: Posted by ぽんたからbzbellへの返信 @ June 14, 2009 [REPLY]
    user-pic

    >>28 bzbell さん、はじめまして。

    私も「よっしー」さんと同様に、ブログのタイトルを取り除きたいのですが、

    prototype.pagerank.js内のどこを修正すれば良いのでしょうか?しくしく

    よろしくお願い致します。

    #40: Posted by Author Profile Page bzbellからぽんたへの返信 @ June 14, 2009 [REPLY]
    user-pic

    >>39 ぽんた さん

    おはよございます^^

    ぽんた さんとこのブログの TITLE 属性のフォーマットによって記述が変わります。
    サイト名称を除外するコードは prototype.pagerank.js 内の 32 行目を編集することで実現できます。

    たとえば、「サイト名称 - ページタイトル」というフォーマットだった場合には以下のように記述してください。
    op.page_name = this.pagerank_espace(op.page_name.replace('サイト名称 - ', ''));
    

    上記『サイト名称』を、ぽんた さんとこのサイト名で変更します。
    よく分からないようでしたら、ぽんた さんのブログの URL を教えていただければわたしの方で確認した上で修正方法をご連絡しますうぅ~ん
    今後ともどうぞよしなにぺこり

    #41: Posted by ぽんた @ June 14, 2009 [REPLY]
    user-pic

    こんにちは!

    ご回答ありがとうございます。バイバイ

    私のサイトでは、
    titleタグの構成が下記のようになっています。

    「ペータイトル | サイト名 - サイト名のサブタイトル」

    この場合は、
    「 | サイト名 - サイト名のサブタイトル」の部分を取り除くのですよね?

    #42: Posted by Author Profile Page bzbellからぽんたへの返信 @ June 14, 2009 [REPLY]
    user-pic

    >>41 ぽんた さん

    では以下のように変更して確認してみてください。

    op.page_name = this.pagerank_espace(op.page_name.replace(/ | .*$/, ''));
    

    確認ですが、

    1. ぽんた さんの TITLE 属性で指定してる「|」は全角でよかったでしょうか。
    2. 「|」の前と後には、半角スペースが入っているということでよかったでしょうか。

    上記いずれも満たしているのでしたら、先ほどの例をそのまま使用して頂けたらと思います。
    以上ですブイブイ

    #43: Posted by ぽんた @ June 14, 2009 [REPLY]
    user-pic

    アドバイスありがとうございます。あせあせ

    1,の条件ですが、全角ではなく半角です。
    説明不足で大変失礼致しました。

    半角縦線でやってみたのですが、どうも出来ませんでした。あせあせ

    お手数をお掛け致します。しくしく

    #44: Posted by Author Profile Page bzbellからぽんたへの返信 @ June 14, 2009 [REPLY]
    user-pic

    >>43 ぽんた さん

    すいませんイヤイヤでは以下のように変更してください。
    op.page_name = this.pagerank_espace(op.page_name.replace(/^(.*)( | .*)$/, '$1'));
    
    #45: Posted by ぽんたからbzbellへの返信 @ June 14, 2009 [REPLY]
    user-pic

    >>44 bzbell さん

    表示されました!!ワクワク

    丁寧にアドバイスして頂き、誠にありがとうございます。

    これからも大切にプラグインを使わせて頂きます!

    それでは失礼致します。バイバイ

    #46: Posted by Author Profile Page ajyuchoaheyo @ July 10, 2009 [REPLY]
    user-pic

    こんにちは、TOSHIZOと申します。

    ランキング表示のプラグインを活用させて頂いております。
    ありがとうございます。

    なんとかランキング表示がされるところまでは出来たのですが、ランキングポイントとページタイトルの間にポイントのP(ポイントのP)のマークを表示したいのですが中々うまくいきません。

    どこをどのように書き換えればいいのかご教授いただけないでしょうか。
    初歩的な質問で申し訳ございません。

    どうぞよろしくお願いします。

    #47: Posted by Author Profile Page bzbellからajyuchoaheyoへの返信 @ July 10, 2009 [REPLY]
    user-pic

    >>46 ajyuchoaheyo さん

    こんばんわ^^

    prototype.pagerank.js 内の 98 行目を以下のように変更してみてください。

    out.push(['<span class="right">P', val, '</span>'].join(''));
    

    上記のように変更することで以下のような表示がされると思います。

    ページタイトル    P123
    
    ご確認くださいぺこり
    #48: Posted by Author Profile Page ajyuchoaheyo @ July 11, 2009 [REPLY]
    user-pic

    bzbellさん

    早速、ご指導くださいましてありがとうございます。
    思い通りの表示にすることが出来ました。
    これからも色々と勉強させていただきたいと思ってます。
    よろしくお願いします。

    ありがとうございました。

    #49: Posted by jari10 @ December 25, 2009 [REPLY]
    user-pic

    こんにちは。

    アクセスランキングの217を設定をして表示を確認したところ、
    jupiさんのように、

    (現在の表示)
    Range: 2009/12/19-2009/12/25
    Count: 0/7Days

    は表示されるのですが、logが取得できていないようで
    ランキングが表示されません。
    rapidsiteのvpsを利用しています。
    なにか特別な設定とうは必要になりますでしょうか。

    おしえていただけないでしょうか。
    宜しくお願いします。

    #50: Posted by Author Profile Page bzbellからjari10への返信 @ December 26, 2009 [REPLY]
    user-pic

    >>49 jari10 さん

    こんにちわ^^

    返事が遅くなってすいません。
    ご質問の件ですが、サーバサイドプログラムは応答を返してることから、たぶんサーバ環境の問題かと思われまする。
    調べたところ、jari10 さんがお使いのサーバの PHP のバージョンは PHP4 をお使いということで間違いないでしょうか。

    本来なら自動的に log/ フォルダを作成して、その中ブログ ID のフォルダが作成されます。
    ですが、PHP4 では未サポートなコードを使用してるため、log/ フォルダなどが作成されない=ログが保存されない…という現象が発生してると思われます。

    ■PHP4 対策

    rank_post.php 内の 9 行目を以下のように変更して確認してみてください。

    変更前
    if (!file_exists($param['LOGDIRS'])) @mkdir($param['LOGDIRS'], 0755, true);
    変更後
    // if (!file_exists($param['LOGDIRS'])) @mkdir($param['LOGDIRS'], 0755, true);
    if (!file_exists($param['LOGDIRS'])) {
    if (!file_exists('log')) @mkdir('log', 0755,);
    @mkdir($param['LOGDIRS'], 0755,);
    }
    

    以上ご確認くださいぺこり

    #51: Posted by ymrhs @ January 26, 2010 [REPLY]
    user-pic

    bzbellさん

    以前にもお世話になりました ymrhs と申します。
    前回とても便利に使わせていただいたので、また別件でもお世話になろうと思っております。
    よろしくお願いします。ぺこり

    著作権に関して質問させてください。
    http://creativecommons.org/licenses/by/2.1/jp/
    「原著作者のクレジットを表示しなければなりません」とは
    prototype.pagerank.js のコピーライトを消さずに残しておくということで
    条件は満たされるでしょうか?
    著作権のことがよくわかっていなくて、初歩的な質問ですみません。。

    やりたいことは以下の通りです。
    ・ログの取得はプラグインをそのまま使わせていただく。
    ・ランキング表示はプラグインの JSON を使っての表示ではなく、別途 PHP プログラムを用意してランキングの HTML 生成をする。 ( readlog() 関数をコピーしてカスタマイズします。)

    カスタマイズの理由は JavaScript OFF の方でも
    ランキングは表示したいからです。(ログ取得はあきらます)
    ランキング生成プログラムは cron で日に一度実行する予定です。

    長文になってしまい申し訳ございません。
    問題ないとよいのですが。。

    #52: Posted by Author Profile Page bzbellからymrhsへの返信 @ January 26, 2010 [REPLY]
    user-pic

    >>51 ymrhs さん

    こんばんわ^^

    前のバージョンですと、PHP 側で HTML を出力するコードになってたのですが、PHP を知らないとデザイン変更がムズかしいかな…と思って JavaScript 側で出力するよう変更したんです。
    そんな変更も、JavaScript 知らないなら結局変更できないから意味ないですよねあせあせ
    ウチが作ったものについての著作権を言われてますかブイブイそれでしたらご報告頂けたのでご自由に使っていただいて構いませんよやあ!

    #53: Posted by ymrhsからbzbellへの返信 @ January 27, 2010 [REPLY]
    user-pic

    >>52 bzbell さん

    とてもありがたいですエーン
    ありがとうございます!!

    #54: Posted by うなびどん @ April 8, 2010 [REPLY]
    user-pic

    ランキングプラグインを使用させていただいております。
    素敵なプラグインをありがとうございます。

    ひとつ質問させてください。

    MT5に設置したのですが、
    ブログのトップページは集計・表示しているのですが
    子ページ(ブログ記事ページ)をどうも集計していないようなのです。

    トップページには、
    ---
    サイト名(トップページ)
    Range: 2010/04/02-2010/04/08
    Count: 28/7Days
    ---
    というように、トップページの集計結果のみが表示されています。

    子ページは、Javascriptは設置していますが、表示はありません。

    ログには
    http://www.domain..com/blog1/<>ブログ名<>111.22.33.44<>http://domain.com/blog1/2010/04/post.html
    という感じで記述されています。

    HTMLヘッダは各ページに設置してあります。


    この状態で、どういう原因が考えらえれますでしょうか?

    思い当たることがあれば、教えていただければと思います。

    お忙しいところ恐縮ですが、よろしくお願いいたします。

    #55: Posted by Author Profile Page bzbellからうなびどんへの返信 @ April 12, 2010 [REPLY]
    user-pic

    >>54 うなびどん さん

    こんばんわ^^

    返事が遅くなりすいません。
    トップページしかロギングされないとのことですが、それはおっかしいですね。
    基本的にトップページ以外のページでは除外するようなことはしません。
    ですが、オプションの exclude_page を使用された場合には例外ではありません。

    各ページ内で exclude_page オプションを使用してないかご確認くださいウインク

    #56: Posted by うなびどんからbzbellへの返信 @ April 14, 2010 [REPLY]
    user-pic

    >>55 bzbell さん

    返信ありがとうございます。

    exclude_page オプションは使用してないです。


    再度DLからやり直してみたりしたんですが
    どうしても解決できなかったので、
    今回は違うプログラムを使用しました。
    (締切もあるので(^_^;))


    可能性があるとしたら・・・
    MTユーザー(apach)とFTPのユーザーが違うことでしょうか・・・?
    でもパーミッションは、対応するように設定してあるんですよね・・・。


    また原因がわかりましたらご報告しますね。

    お手数おかけしてすみませんでしたもじもじもじもじ

     Post a Comment

     

    コメント用フィード