« Thingamablog 1.1b4 が出ました | Main | Mac OS X 10.5(Leopard) で Thingamablog »
コメント&トラックバックをブログに追加できるサービス HaloScan が JS-Kit と連携してエントリのレーティング機能をサポートしました。
Thingamablog でこれを利用する(一つの)方法を説明します。
まず HaloScan のダッシュボードから辿ることができる JS-Kit の説明のページでは
HaloScan: Customizing the Ratings widget から2008年1月11日に引用<div class="js-kit-rating" title="" permalink=""></div>
<script src="http://js-kit.com/ratings.js"></script>
というコードをコピーして、最初の div 要素をレーティング表示させたいところに、次の script 要素を body 要素の終了タグの直前にペーストしてからページを公開するという説明がしてあります。
しかし、それを実際にやってみてもうまくいきません。恐らくエントリページはうまくいっていたと思うのですが、メインページ(main.template)、カテゴリページ(category.template)、アーカイブページ(archive.template)など複数のエントリがあるところではこれでうまくいくはずがありません。なぜならこれらのページではレーティング表示させたい箇所が複数あるのに、どれがどのレーティングかを区別する情報が全く存在しないからです。
この情報の欠如を補うのが上のインストラクションコードにある title="" permalink="" という属性指定の部分だろうと予想して、そこに各エントリのタイトルと固定リンクが入るようにしてやってみました。
具体的には各テンプレートで次のようにしました。
<div class="js-kit-rating" title="<Entry
Title><$EntryTitle encode_html="1"$></EntryTitle>" permalink="<$EntryPermalink$>"></div>
しかしこれも駄目でした。エントリページではレーティング結果が残りますが、メインページには反映されません。
これを解決するヒントは同解説ページの「Multiple rating widgets on one page」の項と「Same ratings on different pages」の項です。ここには一つのページで複数のレーティング表示をするための説明と複数のページで同じレーティングを表示するための説明が書いてあります。
これらによると path 属性値に何のレーティングかを識別するための値を入れればよいとわかります。しかしながら具体的にどんな値を入れればよいのかがわかりません。URL の中のパス部分を入れればよいような感じがしますが、その確証がありません。レーティングの FAQ のページを読むと、Blogger 用のコードから path 属性だけでなく title 属性や permalink 属性もこれまでの解釈で正しいと読み取れます。しかしその上にあるレーティングのリセットの説明を併せて読むと path 属性値は実はなんでも良さそうにも思えます。
そこで、エントリページの URL のパス部分を本当に入れた場合と、HaloScan のコメントの ID に使用するものを入れた場合の両方を試してみました。HaloScan のコメントの ID はそのままのもの(例えばこのブログでしたら“/ を付けたものもテストページで試してみました。
しかし、実際にうまくいったのはエントリページの URL のパス部分を本当に入れた場合だけでした。うまくいくとは次のことです。
うまくいかなかったケースでは 2 や 3 が駄目でした。
というわけで結局のところ次のようにすればこの機能が利用できるとわかりました。
<Entry
Title><$EntryTitle encode_html="1"$></EntryTitle> でエントリのタイトルを入れる。<$EntryPermalink$> でエントリの固定リンクを入れる。問題は固定リンクの URL のパス部分です。Thingamablog のデフォルトではたしかエントリの単独ページは存在せず、アンカー(フラグメント)付きのアーカイブページが固定リンクになっていたと記憶しています。アーカイブページはブログの設定で一ヶ月とか一週間とか、そういう期間毎のエントリの集合のページです。これが週ベースの期間になっているとパス部分のみをテンプレートタグで再現するのが困難に思われます。
幸い私の場合は月毎のアーカイブページにしているため次のようにしてうまくできました。
<div class="js-kit-rating" title="<Entry
Title><$EntryTitle encode_html="1"$></EntryTitle>" permalink="<$EntryPermalink$>" path="/yuji_okamura/iSawIt/archives/<DayHeader><$DayHeaderDate format="yyyy"$>/<$DayHeaderDate format="MM"$></DayHeader>/entry_<$EntryID$>.html"></div>
私と同じように月毎のアーカイブページを使用し、エントリ単独のページをエントリの固定リンクにしている場合はこのコードを参考にすればレーティング機能を付けることができるでしょう。