アクセス一覧ページを作る
アクセス数を把握するプラグインが標準でついています。これは postview というものです。FlatPress がブログで活用されることが想定されているの「投稿ページごとのアクセス数」であることから、ウエブカウンターとかではなく、この名称が付いているのだと思われます。これから説明する方法にて、下に示すような「アクセスページの一覧表」を作ることができました。
postview プラグインの動作
- 中身のソースを追いつつ、また実際の動作状況を確かめてみると、次のようになっています。
- 投稿ページブロックについてフックする
- 投稿IDのディレクトリが無ければ何もしない
- 投稿IDディレクトリがあればカウンターファイルの値を+1する
- ログインしている場合にはカウントアップしない
- URLが1ページ表示でないとカウントアップされない(投稿IDが特定できない)
- ログインでない状況ではIDディレクトリと管理ファイルを作成する
- 当該IDのページの view をセットする(テンプレートに表示)
そしてこれを有効にした状態でのサンプル表示はこのようになりました。
上記のサンプルは初期インストールのものなので、本サイトの記事を参考にされて改造されている方の場合は、以下の2点にご注意ください。
1、もし、この常時が出ない場合は、fp-interface/themes/leggero/entry-default.tpl において、その部分がコメントアウトされている可能性があります。 {if isset($views)}(<strong>{$views}</strong> views){/if} の部分が有効になっているかをお確かめください。
2、また、本サイトではログインしていないと、こうしたものが表示できない設定としているので、同様にこのテンプレートをチェックしてください。ログインしているときのみ表示される部分は{if $login_status == 'login'} から{/if} で囲まれた部分となります。
それでは実際のスクリーンショットをみてみましょう。まずは、postview プラグインを有効にします。
本サイトのテンプレート(テーマ)で表示させた場合はこんな感じです。
アクセスページの一覧表を表示するページを作る必要がありますが、いつも作成していては時間の無駄となります。そこで、固定ページ(static)を作る手順とし、先にインストールしたプラグインである inlinephp が活躍します。プログラムリストは下方でお示しします。この一覧表は表示する時点でコンテンツ全部を集計します。
一覧表示をさせるプログラム(php)スクリプトです。inlinephp のタグである[exec],[/exec]を含めて入力をします。
[exec] global $fpdb, $smarty; $q = $fpdb->getQuery(); $calc = $q->single; $q = new FPDB_Query(array('start'=>0, 'count'=>-1, 'fullparse'=>true), null); $entry = array(); $widget = array(); $maxv = 0; $maxw = 240; // maximum width for each image bar $imgh = 8; // height of each image bar while($q->hasMore()) { list($id, $e) = $q->getEntry(); $dir = entry_dir($id); $f = $dir . '/view_counter' .EXT; $v = io_load_file($f); if ($v===false){ $v = 0; } $subj = $e['subject']; $loc = BLOG_BASEURL . 'index.php?x=entry:' . $id; array_push($entry, array($subj, $v, $loc)); $maxv = max($maxv, $v); } $viewlist = ""; $viewlist .= '<table style="table-layout: fixed;">'; foreach($entry as $k => $val) { $subj = $val[0]; // $subj = substr($val[0], 0, 64); $v = $val[1]; $w = 1 + round($v/$maxv*$maxw); $loc = $val[2]; $fv = number_format($v); if($fv == 0) continue; $viewlist .= '<tr><td style="text-align:right; border:0">' . '<a href="' . $loc . '">' . $subj . '</a>' . '</td><td style="border:0">' . '<img src="data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///6Cts////yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw==" width="' . $w . '" height="' . $imgh . '">' . '<span style="color:Silver;font-size:10pt;margin-left:4px;vertical-align:top;">' . $fv . '</span>' . '</td></tr>'; } $viewlist .= '</table>'; echo "$viewlist"; [/exec]