headを編集できなくても星を付ける

遊星商會の商品ページに星を付けてみた。このシステムはpaperboy&co.のColor Me Shop!proを利用しているのだが、テンプレートはbody内しか変更できない。
はてなスターをブログに設置するには - はてなスター日記を見ても「head内にscriptを追加」としか書いていないのだが、そう言えば以前Google Analyticsを設置した時にbodyの最後に置いた覚えがある。読み込み自体はheadでもbodyでも問題ないはず、と試してみたらちゃんと動作した。
ただし、はてなスターはデフォルトではパーマリンク付きのh2に星を付けるようになっている。しかしページ内では他にもh2を使っていたし、☆を付けたいところ(この場合は商品名が適当だろう)にはパーマリンクが付いていない。この辺を、テンプレート変更で対処する。


まず、共通ページのテンプレートを上級モード(HTML・CSS編集)で開き、はてなスター用のスクリプトを追記する。

<script type="text/javascript" src="http://s.hatena.ne.jp/js/HatenaStar.js"></script>
<script type="text/javascript">
Hatena.Star.EntryLoader.headerTagAndClassName = ['h2','product_name'];
Hatena.Star.Token = '「外部ブログ登録」で出てきたID';
</script>

3行目が重要である。最後の部分、大括弧の中に引用符に囲まれカンマで区切られた文字列がある。
最初のh2は☆を付けるタグがh2であることを示すもの。多分デフォルトのテンプレートなら商品名部分はh2になっていると思う(自分の商品ページを開き、ソースを表示させて確認すること)ので、これはそのままでいい。
次の部分は、他のh2と区別するためにクラスを指定するもの。これと同じクラスを、テンプレートの商品名を示すh2に付けなければならない。
商品詳細テンプレートを上級モードで開き、<!-- Product(商品詳細) -->の文字を探す。このすぐ次の行が、多分商品名を表示する部分のはずだ。私の使っているデフォルトテンプレートでは、

<h2><{$product.name}></h2>

となっていた。これを、

<h2 class="product_name"><a href="<{$product_link}>"><{$product.name}></a></h2>

に書き換える。<{$〜}>の部分がColorMeShopの独自タグである。product_linkは商品詳細ページのURLを、product.nameは商品名を示す。


これで実際に☆(というか、☆を追加するボタン)が表示される筈。