2006年04月30日 09:46
パーマリンク固有文字列を作成してHaloScan用に流用する
さて、會澤環境決め打ちカスタマイズですので流用する際には気をつけてください。
数日前からNanoBlogger(以下nb)で作ったこのblogにコメント・トラックバックの使用が可能になりました。というか、可能にしました。その方法とnbのファイル作成ルールの極簡単な解説です。
nbではいくつかのテンプレートがデフォルトフォルダに作られます。例えばトップページを作成する際に次のような手順で作成されます。
- エントリの内容・タイトルなどが「entry.htm」というテンプレートに置換される。
- 一つのページに表示されるエントリ数(blog.conf中で設定されているMAX_ENTRIES定数で定義されている:デフォルトは10)分だけこの置換されたentry.hymの内容が「main_index.htm」にコピーされる。
さて、すぐ前のエントリでパーマリンクを単独ファイルにする方法を述べました。この方法にすると作成されるアーカイブフォルダの構成そのものも変わってきます。その環境下で決め打ちしてコメント・トラックバックを設置します。
會澤が使っているのは一切のcgiが使えない.Macサーバーですので、外部サービスを利用させてもらいます。iBlogから使っていた「HaloScan.com - Weblog Commenting and Trackback」を使います。HaloScan.comでは、二つの情報によってコメントツリーの中から一つのコメントを決定しています。一つは登録ユーザー名。もう一つは登録ユーザーが使用する固有ID文字列です。HaloScanにすでに登録されていることを前提条件にします。あとは固有IDを決定してやればいいことになります。iBlogの場合はランダムに決定した8〜12桁の数字の羅列でした。別に文字列であればいいのでタイトル文字列であってもかまわないことになります。しかし、HaloScanは日本語のような文字列を固有IDにすることを推奨していないはずですし、この文字列がネット上に流れることを考えればマルチバイト文字コード文字列は問題になりそうです。
nbには$NB_Permalinkという変数が用意されていますのでこれを利用しない手はありません。しかし、この変数には「/」が含まれるんですね。これはうまくありません。HaloScanにこのままの文字列を渡してしまうと誤動作します。「/」を削除してやる必要があります。
nbではテンプレート中に$()で囲まれた部分はその部分がターミナルのコマンドであると解釈して実行してくれるという機能があります。これを利用すれば$NB_Permalink文字列から「/」のみを取り除いた文字列を得ることができ、それをHaloScanの固有IDとして利用することができます。
$(echo '| <a class="link" href="http://www.haloscan.com/comments/HaloScan登録ユーザー名/')
$(echo "$NB_EntryPermalink"|sed -e 's_/__g'|sed -e 's/_//g'|sed -e 's/index.html//g')
$(echo '">Comments</a>')
2行目が文字列を変換しているんですが、恥ずかしいのでもっと良い方法があったらそっと教えてください。めんどくさかったので「/」「_」.html」という3つの文字列をそっくり削除しています。トラックバックに関しても同様。あとは「entry.htm」テンプレートの適当なところに挿入してやればいいことになります。この置換に関する部分は完全にローカルで行われ、ネット上に公開したものに関してはまったく関係なくなっています。ユーザーサイドで加工が行われるJavaScriptや、サーバーサイドで加工が行われるPHPなどとは違う点ですね。
Posted by kaizawa | TrackBacks