counterview.inc.php†
サマリ | counterプラグインでカウントしたすべてのページのカウントを表にする |
リビジョン | 1.0 |
対応バージョン | 1.4.4 |
投稿者 | H2 |
投稿日 | |
counterプラグインでカウントしたすべてのページのカウントを表にする†
ページごとのアクセス数を表にしてくれるプラグイン。#counterが書かれているページの各カウント数(total, today, yesterday)をテーブルにしてくれる。
- 使い方
#counterview
- こんな感じ
ページ名 | トータル | 今日 | 昨日 |
FrontPage | 43 | 23 | 7 |
MenuBar | 85 | 43 | 10 |
自己紹介 | 23 | 10 | 1 |
ダウンロード†
コメント†
- 面白いプラグインですね。テーブル表示するページ数の指定と、トータル・今日・昨日それぞれでソートができると便利かも。 -- sagen
- 数字を右寄せをしたいのですが、可能ですか? --
- 小出しですいません。以下の部分のstyle=\"text-align:right;\"を加えればOKです。-- baniko
if(strcmp($ext, COUNTER_EXT)==0) {
$pageName = decode($fileName);
if(eregi('^:.*',$pageName)) continue;
$counter = plugin_counterview_get_count($pageName);
if($counter['total']==0) continue;
$r_page = rawurlencode($pageName);
$ret .= "<tr>";
$ret .= "<td class=\"style_td\"><a href=\"$script?$r_page\">$pageName</a></td>";
$ret .= "<td class=\"style_td\" style=\"text-align:right;\">{$counter['total']}</td>";
$ret .= "<td class=\"style_td\" style=\"text-align:right;\">{$counter['today']}</td>";
$ret .= "<td class=\"style_td\" style=\"text-align:right;\">{$counter['yesterday']}</td>";
$ret .= "</tr>\n";
}
- 特定カテゴリ以下のページのみとか、そんな感じでページ指定ができると便利かも。 --
- 閲覧できない設定のページに関しては、カウントを表示しないようにしたいのですが、:で始まるページのみ表示しないようにすることは可能なんでしょうか? --
- とりあえず、:で始まるものを表示しないようにしてみました。また、WikiName等だけで、実体のないページ(total counter==0)のものも非表示にしてみました。(自分の好み) counterview.inc.php.2-- baniko
- このようにすると、$non_list を反映するようになりますよ :) -- teanan
16行目
function plugin_counterview_convert() {
global $script;
+ global $non_list;
45行目
$pageName = decode($fileName);
- if(eregi('^:.+),$pageName) continue;
+ if(preg_match("/$non_list/",$pageName)) continue;
$counter = plugin_counterview_get_count($pageName);
- ありがとうございます。無事、指定ページの除外ができました。 --
- おお、いつの間にかVer.2 が出てる! 嬉しいです ☆ -- H2
- カウンタが更新されないと、古い日付のカウンタも今日・昨日に表示されています。こんな感じのコードを足して使っています。 -- PHP初心者
- もっとスマートなコードがあれば教えてください。
68行目
static $default;
+ $today = date('Ymd');
111行目
fclose($fp);
+ // 日付比較
+ // カウンタ日付をyyyy/mm/ddからyyyymmddに置換
+ $cdate = ereg_replace("/", "", $counters[$page]['date']);
+ if($today - 1 == $cdate)
+ {
+ // 日付が昨日
+ $counters[$page]['yesterday'] = $counters[$page]['today'];
+ $counters[$page]['today'] = 0;
+ }
+ else if($today - 1 > $cdate)
+ {
+ // 日付が昨日より前
+ $counters[$page]['yesterday'] = 0;
+ $counters[$page]['today'] = 0;
+ }
- 表示させないページをパラメーターで渡すようにするともっと使い易そうですが(例えば 「日記」を表示しない等)、自分はプログラムがちゃんと書けないので提案しかできません…; -- ton
- ソート対応パッチ http://www.revulo.com/blog/20060503.html#p02 --
- PHP初心者さんの日付比較のパッチですが、月の最初の日(1日)だけ表示がおかしくなります。
以下のように修正してみました。 -- matsuda
// 日付比較
$today = strtotime(date('Y-m-d'));
$cdate = strtotime(str_replace('/', '-', $counters[$page]['date']));
if ($cdate + 2 * 24 * 60 * 60 <= $today) {
// 日付が昨日より前
$counters[$page]['yesterday'] = 0;
$counters[$page]['today'] = 0;
}
else if ($cdate + 24 * 60 * 60 <= $today) {
// 日付が昨日
$counters[$page]['yesterday'] = $counters[$page]['today'];
$counters[$page]['today'] = 0;
}