はてなスターの設置を例にMovable Typeで共通となる部分をモジュールテンプレートを利用して一元管理したいような場面をみていきます
Vicuna CMSでのはてなスターの設置については、以下のページが参考になるかと思います。Wordpressでの説明になっていますが、Movable Typeでも、記事ページやアーカイブページをMTのものと読み替えをすればそのまま利用可能です。
- Vicunaにはてなスターをつける方法 - ma38su.sourceforge.jp[ ma38su.sourceforge.jp ]
はてなスターについては、このブログでは以下のページにほんの少しばかり記載しており、本エントリはその補記的なものであります。あ、別に読んでいただかなくて構いません。メモ程度のことですし。
共通部分をテンプレートモジュールにて
はてなスターの設置ですが、HatenaStar.jsファイルの読み込みとおよび、トークン、SiteConfigの部分に分かれています。
テンプレートでhatenastarという変数が指定されている場合に、はてなスターのコードを出力させるようにしてみます。以下のようなコードを設置したいテンプレートの上部に埋め込みます。
<MTSetVar name="hatenastar" value="1">
ここでは、共通のmetaタグなどが記載されている、HTML Header(共通Head内要素)テンプレートモジュールに、はてなスターのコードを出力させるためのコードを埋めるとします。実際に使っているのは以下のようなものです。
<MTIf name="hatenastar">
<script type="text/javascript" src="http://s.hatena.ne.jp/js/HatenaStar.js"></script>
<script type="text/javascript">
Hatena.Star.Token = 'Your Hatena Star Token';
<mt:If name="tempName" eq="individual_entry">
Hatena.Star.SiteConfig = {
//...略
};
<MTElseIf name="tempName" like="main|category|datebased">
Hatena.Star.EntryLoader.headerTagAndClassName = ['h2',null];
</mt:If>
</script>
</MTIf>
はてなスタートークンの部分までを共通とし、Siteconfigの箇所でテンプレートの種類による振り分けをおこなっています。
テンプレートごとでスターをつける要素が異なる場合に
ここのブログでは、「アーカイブインデックステンプレート」でもはてなスターがつくようにしてあります。そこではどうしているかというと、SiteConfigは、直に当該テンプレート上に書くという形にしてあります。
<mt:Include module="HTML Header">
<!-- hatena star -->
<script type="text/javascript">
Hatena.Star.EntryLoader.headerTagAndClassName = ['span','entryPermalink'];
</script>>
このような形で、カスタマイズしたインデックステンプレートなどで、「任意の箇所にスターをつけたい」、といった場合に対応できるのでないでしょうか。
ここではおこなっていませんが、ウェブページアーカイブにおいて、ページによりスターをつけたりつけなかったりする場合は例えばこのような形です。
はてなスターを設置したいウェブページに@hatenastarというタグをつけておきます。MTPageIfTaggedを使って、@hatenastarがついたウェブページの場合に、<MTSetVar name="hatenastar" value="1">を処理するようにします。
設置と管理等については以上です。
追記と訂正:HTML Header モジュールテンプレート内のコードでscript要素の終了タグの部分が抜け落ちてましたので追記しました。