plugins:accessanalyze

NP_AccessAnalyze.php

外部アクセス解析に頼るほど大量のアクセスがあるわけではないけど簡単なアクセス解析をしたい。
Nucleusで完結したいという人向けのプラグイン。

ログ取得ついでにアクセスカウンタと人気の記事一覧表示機能を搭載。

General Plugin info
作者: Reine
最新のバージョン: v1.42(2012/11/18)
入手先: NP_AccessAnalyze_142.zip
動作サンプル: (なし)
フォーラム参照先: NP_AccessAnalyze - Nucleus完結型の簡易アクセス解析
セキュリティチェック:

このプラグインについて

私がNucleusを使い始めたのは2008年頃。
アクセス解析プラグインが無いかと探したところ、NP_Analyzeがあることがわかりましたが配布中止となっていて入手できませんでした。
しばらくしたら誰か作ってくれるかもという淡い期待を持っていましたが、外部のアクセス解析サービスが手頃になってきた事もあり、作られる気配が無いので作ってしまいました。
NP_Analyzeの管理画面は見たこと無いのでほぼ別物だと思います。

もし良かったら使ってやってください。
使った感想などフォーラムに頂けると嬉しいです。

注意事項

  • PHP5.2/Nucleus CMS v3.41/MySQL5 の環境で動作確認しています。
    少なくともPHPのバージョンは5以上が必要です。

インストール方法

  1. 『ここ』からzipファイルを取得し解凍後、サーバーのプラグインディレクトリにアップロードする
  2. 管理画面からプラグインをインストールする

オプション

プラグインオプション

  • (1) ブログ管理者のログを取得しますか?
    ブログまたはサイトの管理者権限を持っているユーザーがログインした状態でサイトを閲覧した場合にログを取得するかどうかを指定します。
  • (2) ブログやアイテムの削除時に関連するログも消しますか?
    ブログやアイテムが削除された場合に、blogidやitemidをキーに持つログデータを削除するかどうかを指定します。
    無いもののログがあっても使い道ないので消した方がいいと思います。
  • (3) アンインストール時にデータを削除しますか?
    アンインストール時にプラグインで作成したテーブルを削除するかどうかを指定します。
  • (4) クイックメニューにボタンを追加しますか?
    管理画面のクイックメニューにボタンを表示するかどうかを指定します。

ブログ設定オプション

  • (5) カウンタ表示用テンプレート :!:v1.2から変更されています
    カウンタ出力に使うテンプレートです。以下のスキン変数が使えます。
    • <%total_uv%> 累計ユニークユーザー数
    • <%total_pv%> 累計ページビュー数
    • <%today_uv%> 当日のユニークユーザー数
    • <%today_pv%> 当日のページビュー数
    • <%yesterday_uv%> 昨日のユニークユーザー数
    • <%yesterday_pv%> 昨日のページビュー数
    • <%week_uv%> 今週(直近の日曜~当日)のユニークユーザー数
    • <%week_pv%> 今週(直近の日曜~当日)のページビュー数
  • (6) 人気アイテムリスト表示用テンプレート
    人気のアイテムリスト出力に使うテンプレートです。以下のスキン変数が使えます。
    • <%rank%> 人気アクセス順位
    • <%title%> アイテムタイトル
    • <%itemlink%> アイテムへのリンクURL
    • <%postdate%> アイテム投稿日
    • <%pageview%> アイテムのページビュー数
    • <%comments%> アイテムに対するコメント数
  • (7) ユーザービューカウンタの初期値
    ユーザービューカウンタの初期値を設定します。
  • (8) ページビューカウンタの初期値
    ページビューカウンタの初期値を設定します。

取得するログについて

サイトアクセスカウント

  • 訪問者数 - ユニークなユーザー数です。
    IPなどを見て1日に1回のみ訪問者としてカウントされます。
  • アクセス数 - いわゆるページビューです。
  • RSS参照数 - RSSに対するページビューです。
    レスポンスのContentTypeに"xml"が含まれているかどうかで判断しています。

時間帯アクセスカウント

  • アクセス数 - 時間帯別のページビュー数を取ります。

アイテムアクセスカウント

  • アクセス数 - アイテム別のページビュー数を取ります。

参照元アクセスカウント

  • アクセス数 - アイテム、参照元別のページビュー数を取ります。

参照元URLのQueryString(?以降)は意図的に落としています。

検索アクセスカウント

  • アクセス数 - 検索元、検索語句別のページビュー数を取ります。

サイト内の検索機能を使った場合に、検索元が"<search>"となります。
google、yahoo、bing、goo、baidu、Ask、AOL、au oneからのアクセスに対応しています。

エージェントアクセスカウント

  • 訪問者数 - OS、ブラウザ、ブラウザエンジン別の訪問者数を取ります。

OS、ブラウザ、ブラウザエンジンの表記はブラウザのエージェント文字列に含まれているものがそのまま使われるので、"Windows NT 6.1"→"Windows 7"等の読み替えを脳内で行う必要があります。

:!: カウントされるブラウザやBotを追加する場合は、NP_AccessAnalyze.phpの332行 $blowserlist変数の定義に使われている文字列に半角カンマ区切りで、対象のブラウザやBotが送信するエージェント文字列に含まれる特徴的な語句を追加してください。

アクセスログの参照について

ログを見る

ブログと時期(年、月、日)を指定してログを見ます。 月を指定したら、その月の間のアクセスが集約されます。

サイトアクセス表示では、年が選択されていれば、その年における各月の、月が選択されていれば、その月における各日のログ一覧が出ます。 表示されない月(or日)はアクセスが無い月(or日)です。

アイテム表示時にタイトル名がリンクになっていて、クリックすると選択したアイテムの情報が出ます。
アイテムの期間内ログ一覧と、アイテムに対するリファラ一覧だけですが。

ログを圧縮する

データ的な話をするとログは種類別に1日1レコード増加します。
ただし、"アイテム"、"参照元"、"検索"、"エージェント"などはアクセス数以外の項目のバリエーション分レコードが増えます。
一日数千アクセスでもない限りはなんら問題ないデータ量だと思われますが、 ログ圧縮を行うことで日次で作成されるレコードを月の単位や年の単位で集約できます。
集約すると元の単位にはバラせないので注意してください。
期間中の圧縮操作も問題ありません。(多分)

v1.1より、追加機能との兼ね合いも考慮して直近1週間分は圧縮されないようになっています。;-)

v1.2より年単位でログの削除ができるようになっています。

その他の機能について

アクセスログを取得しているついでにいくつかの機能を追加してみました。(v1.1以降)

:!:これらの機能では利用対象となる期間のログ圧縮状態が大きく影響してきます。

例えば、アクセスカウンタを利用して昨日のカウンタを表示している場合、
今日が12/5として、12月分のログ圧縮が行われると12/4のログが無くなってしまうので
昨日(12/4)のアクセス数が"0"と表示されます。

同様の事が人気アイテムリストにも言えます。

そのため、これらの機能を利用する際はログの圧縮対象期間に注意してください。

アクセスカウンタの出力

アクセスカウンタの設置が可能です。
出力できるカウント値についてはオプションのスキン変数を参照してください。
以下の記述をスキンもしくはテンプレート内に記載することで、オプションで設定した出力用テンプレートのスキン変数を置き換えて出力します。

<%AccessAnalyze(counter)%>

プラグイン管理画面からカウンタの初期値を設定することができます。
カウンタの初期値はブログごとに持っています。

人気アイテムリストの出力

ページビュー数を元にした人気アイテムリストを出力します。
スキンもしくはテンプレートに以下の記述を入れることで人気アイテムのリストを出力用テンプレートを元に出力します。

<%AccessAnalyze(itemrank, [期間], [件数], [投稿日フォーマット])%>

必要に応じて[期間]、[件数]、[投稿日フォーマット]の指定が必要です。
指定された件数分出力用テンプレートのスキン変数を置き換えた結果が出力されます。

  • [期間] ページビュー数をカウントする期間を指定します。
      total、month、week、dayが利用できます。
      直近2ヶ月のページビュー数でランク付けする場合は"2month"と記載します。
  • [件数] ランキングトップいくつまでを表示するかを指定します。
      "5"と記載すればTop5が表示されます。
  • [投稿日フォーマット] アイテム投稿日の日付フォーマットを指定します。
      PHPのDate()関数で使用されるフォーマット文字列として渡されます。
      指定がなければ"Y-m-d"となります。

直近2ヶ月のページビュー数の累計で、人気アイテムリストTop5を出したい場合は
次のように記述することになります。
<%AccessAnalyze(itemrank, 2month, 5)%>

総期間におけるTop10、かつ投稿日を"yyyy/m/d"と表示したいなら
<%AccessAnalyze(itemrank, total, 10, Y/n/j)%>

希望事項・バグ報告

フォーラムへお寄せください。

開発履歴

  • Version 1.4 リリース [2012/10/6]
    • MySQL4.x対応の1.3aバージョンを取り込んだ
    • 管理画面のテーブルタグに適用されるスタイルを外部ファイルに出した(管理画面のスタイルによっては見難いらしく、手を入れている方がいるようなので)
  • Version 1.3 リリース [2012/2/6]
    • CostomURLなどでパス階層が違うように見えるサイト(ttp:domain/site/item/xxx など)で各パスにCookieを保存しないように修正 * 判別できる検索エンジンを追加(google、yahoo、bing、goo、baidu、Ask、AOL、au one) * Version 1.22 リリース [2012/1/6] * FancyURL利用時に管理画面で生成されるリンクが正しく生成されない不具合の修正 * Version 1.21 リリース [2011/12/17] * タイトルに"@"を含むアイテムの詳細リンクが正しく作成されない不具合の修正 * ログがある日がリンクにならない不具合の修正 * Version 1.2 リリース [2011/12/15] * テンプレートとカウンタの初期値設定をブログ設定に移動 * ログ削除機能の追加 * 管理画面で月のログがない場合はリンクにならないようにした * Version 1.1 リリース [2011/12/11] * ログ削除処理に関する不具合を修正 * アクセスカウンタ出力機能の追加 * 人気の記事リスト出力機能の追加 * Version 1.01 リリース [2011/12/6] * アイテム選択ができない不具合を修正 * Version 1.0 リリース [2011/12/3] * 取りあえず出来たので公開
 
plugins/accessanalyze.txt · 最終更新: 2012/12/22 00:25 (外部編集)