17時04分40秒 [Web関連]
Movable Typeで生成しているブログ(やウェブページ)の全ページに、別々のアクセスカウンタを設置する簡単な方法はないもんかな……と考えました。
アクセスカウンタCGIは、たいていCGI本体を1つ設置するだけで(一意のパラメータを付加することで)複数ページにカウンタを提供できます。
各ページをMovable Typeで生成している場合、ページを一意に特定できるようなIDを出力する機能(タグ)を使ってアクセスカウンタ用のパラメータを作れば、テンプレート内にCGIの呼び出しを1行書いておくだけで、すべてのページで別々のアクセスカウントが可能でしょう。
ブログエントリだけを対象にするなら、<$MTEntryID$>を使う手もありますが、Movable Typeで生成するページはブログエントリ以外にもありますよね。アーカイブページとか、トップページとか、ブログに含まない独自のウェブページとか。
なので、あらゆるページに対して一意に識別できるような何かが必要です。
何か都合の良いものはないかな……と思って探したところ、
Movable Type 5.2.4 以降で新たに追加された、<$MTCanonicalURL$> というタグの存在に気付きました。
このタグは、主に、
……のようにして使われるためのもののようです。
※ただし、<$mt:CanonicalLink$> を使うことで(<$MTCanonicalURL$>タグを使うことなく)link要素自体も含めて出力可能ですから、あまり直接<$MTCanonicalURL$>を使うことはないような気もしますが。
これで得られるURLを、そのままアクセスカウンタCGIのパラメータに付加してしまえば良さそうです。
<$MTCanonicalURL$> なら、デフォルトでは index.html の有無を区別せずにURLを生成してくれます。
つまり、 http://example.com/index.html にアクセスされても http://example.com/ にアクセスされても、「http://example.com/」という文字列を出力してくれます。
これで、アクセスされたURLによって、(本来は同じページなのに)異なるアクセスカウンタを提供してしまうのを防げます。
わりと便利な気が。
私は、にあ氏のバイナリアクセスカウンタ npc.cgi を使っていまして、以下のように記述しました。
※細かいパラメータは省略していますが。
この1行を、独立したウェブページのHTMLを生成するすべてのテンプレート(=メインページとか、月別アーカイブとか、個別エントリとか)に書いておくことで、すべてのページに別々のアクセスカウンタを設置できました。
URLをそのまま使うのであれば、JavaScriptとかでパラメータを生成しても良いかな……とも思ったんですが、同一ページが複数のURLで表示される可能性がある場合には、MT側の<$MTCanonicalURL$>を使う方が楽かな? ……と、ちょっと思いました。
この日記へのコメントはお気軽に! コメント数:0件
(前の記事) « スタバでEチケットを使ってみたら……
前後のエントリ
< 旧 / 新 >
コメント数: 0件