MovableTypeのコマーシャルパックは、ウェブサイト・ブログ・エントリー・カテゴリー・テンプレート・アイテム(ファイルアップロード)にカスタムフィールドを定義できます。
テンプレートカスタムフィールドの使い道が未だにわからないですが…
このうち、ウェブサイトカスタムフィールドは、Google Analyticsのコードとか、ホームのtitle要素とか、METAのキーワードなどを作ったりします。
定義すると、ウェブサイトの「設定」→「全般」に項目が登場します。
カスタムフィールドを参照するのがウェブサイト内だけなら、以下のように書けば入力した内容が表示されます。
フィールドを「複数行」にしていて、かつソースコードを表示したい場合はconvert_breaks(改行を変換)に「0」を指定しないと余計な改行が入ります。
<$mt:cf_hoge convert_breaks="0"$>
しかし、下層の子ブログで参照する場合はこの書き方だけではだめで、以下のように、mt:BlogParentWebsiteタグで囲む必要が出てきます。
<mt:BlogParentWebsite> <$mt:cf_hoge convert_breaks="0"$> </mt:BlogParentWebsite>
このブロックタグの内側は、対象が「現在のブログが属している親のサイト」になります。ウェブサイトのテンプレートで使用しても問題は起きないので、全部のテンプレートをこう書いてしまった方が無難でしょう。
ダイナミック・パブリッシングが使えない場合はどうするのか
普通はここで終了なのですが、最近迷っているのは、要件やテンプレートの複雑さなどで「ダイナミック・パブリッシング」が使えない案件の場合です。
カスタムフィールドの内容を書き換えた場合、当然ながら、手動で再構築をする必要が出てくるので、ブログ全体の再構築をしない限り更新されない年別アーカイブなどで、古い内容が残ってしまうなどの問題が起こります。
なので、そういう場合はインデックス・テンプレートで独立したHTMLファイルに書き出してしまって、PHPのincludeで読み込んだ方が確実なのかなあ…と思ったりもします。
mt:WebsitePathタグは、サーバーのフルパスを出力します。
<?php include ('<mt:BlogParentWebsite><$mt:WebsitePath$></mt:BlogParentWebsite>customfield_hoge.html'); ?>
余談:ウィジェット
ウィジェットセットに関しては、例えmt:BlogParentWebsiteタグで囲んでも、子ブログで呼び出すことはできないようです。
この場合は、初めからインデックス・テンプレートに書き出してPHPでインクルードするしかありません。
<mt:Ignore>### これはできません ###</mt:Ignore> <mt:BlogParentWebsite> <$mt:WidgetManager name="Sidemenu"$> </mt:BlogParentWebsite>
あくまで私の経験に基づいた話なので、間違っていたら突っ込みお願いします(-人-)