http://wa.otesei.com/item/239
また cgi のカウンタが久々に壊れてしまって、自分のカウンタならまだいいけど、他の人が運営してるブログのカウンタが壊れたら復旧が厳しいな……と思ったので、MySQLでカウントを保管することを考えた結果、Nucleus のプラグインを導入しました。
Nucleus だったら、別プラグインにより DB が自動的に定期的バックアップされるので、万が一カウンタが狂ったとしても、かなり近い値に復元できる、と思ったからです。
このプラグインは、NP_Counter の複数ブログ対応版なので、ブログごとの値設定以外は NP_Counter と同様の設定だけで大丈夫です。個人的にてまどった部分を以下に記載しておきます。
(1)テキストモードで使用すると、必ず [Mode] と表示される。
フォーラムを参照して、同様に修正すればOKです。
echo " <span title='$str_cmode'>[Mode]</span>"; ↓ if ($str_cmode) echo " <span title='$str_cmode'>[Mode]</span>";
(2)画像パスの指定方法
管理画面でのオプション設定「画像パス」ですが、相対パスで指定する必要があります。当サイトの場合、cccc と cgi が同じ階層にあるので、ブログ上で画像を表示するために下記のように記載しました。
表示させたいページとの相対パスを記載する。 ../cgi/nucleus/nucleus/plugins/counter/
(3)個別のカウンター画像の指定
個別のカウンターを用意したい場合、追加パスで記載する必要があるため、必然的に上記の画像パスの直下にフォルダを用意する必要があります。
仮に counter フォルダの直下に mami ってカウンタ用画像を置いた場合、スキン上の表示は下記のようになります。
最後にスラッシュが必要なのに注意 <%CounterMB(image,mami/)%>
まぁここまでやって実際にカウンタを画像で表示させたら、画像が大きすぎてえらいことになってしまいました。
改造すれば大丈夫かとも思ったんですが、とりあえずノーマルの画像表示形式が一番おさまりが良いと思ったので、そちらの形式に変更しておきました。
(4)ロボットをカウントから除外する。
アクセス解析のカウントと比べると余りにも大量のカウントになっていたので、
こちらの記事を参考に、ロボットはカウントから除外させました。
277行目あたり // hit count // 20100731_takehana_del1_add2 //if ( $count_mode == "normal" or if ( !$this->isRobot() and ($count_mode == "normal" or ($count_mode == "ip1" and $tlimit == 0 and $new_ip != $old_ip) or ($count_mode == "ip1" and $tlimit > 0 and $ip1_num[0] == 0) or ($count_mode == "ip2" and $ip2_num[0] == 0) // 20100731_takehana_add1 ) ) {
適当な場所(ソースの最後など)に関数を追加 //2000731_takehana_add_s function isRobot() { $user_agent = $_SERVER[HTTP_USER_AGENT]; $list = array( "[Cc]rawl", "[Bb]ot", "[Ss]pider", "[Ss]lurp", "msnbot", "Googlebot", "Ask Jeeves", "WISEnutbot", "Tkensaku", "NAMAAN", "Alexa", "ichiro@nttr.co.jp", ); foreach($list as $ua) { if (preg_match("/.*$ua.*/s", $user_agent)) { return true; } } return false; } //2000731_takehana_add_e
これで実質的なカウント値になってるかと思います。
コメント