にしし ふぁくとりー(西村文宏 個人サイト)

Presented by Nishishi via Movable Type. Last Updated: 2015/09/22. 13:18:39.

Movable Typeで生成した全ページに個別のアクセスカウンタを付ける方法

Movable Typeで生成しているブログ(やウェブページ)の全ページに、別々のアクセスカウンタを設置する簡単な方法はないもんかな……と考えました。

アクセスカウンタCGIは、たいていCGI本体を1つ設置するだけで(一意のパラメータを付加することで)複数ページにカウンタを提供できます。
各ページをMovable Typeで生成している場合、ページを一意に特定できるようなIDを出力する機能(タグ)を使ってアクセスカウンタ用のパラメータを作れば、テンプレート内にCGIの呼び出しを1行書いておくだけで、すべてのページで別々のアクセスカウントが可能でしょう。

ブログエントリだけを対象にするなら、<$MTEntryID$>を使う手もありますが、Movable Typeで生成するページはブログエントリ以外にもありますよね。アーカイブページとか、トップページとか、ブログに含まない独自のウェブページとか。
なので、あらゆるページに対して一意に識別できるような何かが必要です。

何か都合の良いものはないかな……と思って探したところ、
Movable Type 5.2.4 以降で新たに追加された、<$MTCanonicalURL$> というタグの存在に気付きました。

このタグは、主に、

<link rel="canonical" href="<$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 を使っていまして、以下のように記述しました。
※細かいパラメータは省略していますが。

<img src="/cgi/npc.cgi?L=<$MTCanonicalURL$>&amp;I=/user/www/npc.idx" alt="アクセスカウンタ">

この1行を、独立したウェブページのHTMLを生成するすべてのテンプレート(=メインページとか、月別アーカイブとか、個別エントリとか)に書いておくことで、すべてのページに別々のアクセスカウンタを設置できました。

URLをそのまま使うのであれば、JavaScriptとかでパラメータを生成しても良いかな……とも思ったんですが、同一ページが複数のURLで表示される可能性がある場合には、MT側の<$MTCanonicalURL$>を使う方が楽かな? ……と、ちょっと思いました。

コメント

コメント数: 0件

コメント投稿欄 この日記に対するコメント投稿を歓迎します。

保存しますか?



※本文中にURLは書けません。(書くと投稿が拒否されますのでご注意下さい。)

※投稿内容は、実際にページ上に掲載される前に、管理者によって確認される設定にしている場合があります。その場合は、投稿後にその旨が表示されます。たいてい1~2日以内には表示されるはずですので、気長にお待ち願います。m(_ _)m

トラックバック

このエントリーへのトラックバックURLを表示するにはここをクリック
※スパム防止のため、トラックバックURLは別ウインドウで表示します。(JavaScriptが有効でないと表示されません。)

--- 当サイト内を検索 ---