開発環境で作業していて子サイト(ブログ)のBlogIDで分岐処理をしている場合、本番環境のBlogIDが違う場合は泣きを見ます。サーバー移行などの場合にもよく起こりがちです。DB側でIDを同期させてあげれば回避できますが、都度対応は面倒ですし、引き継ぎの際も後任に嫌な顔をされます。
解決策としては、親サイト内で子サイト(ブログ)のIDを変数へ入れ、各テンプレート内ではIDが入った変数を使って処理するという形。
コード
親サイトのテンプレート内にて。
<mt:Blogs site_ids="children">
<mt:If tag="BlogName" eq="コラム">
<$mt:BlogID setvar="blog_column_id"$>
</mt:If>
<mt:If tag="BlogName" eq="サービス">
<$mt:BlogID setvar="blog_service_id"$>
</mt:If>
<mt:If tag="BlogName" eq="お問い合わせ">
<$mt:BlogID setvar="blog_inquiry_id"$>
</mt:If>
</mt:Blogs>
実際のコードはこんな感じになります。
子サイト(ブログ)をループ
<mt:Blogs site_ids="children">
MTBlogsにモディファイアをsite_idsで子サイト全部に指定。基本これだけで子サイト(ブログ)が全部ループする(はず)。
子サイト名に一致するBlogIDを変数へ代入
<mt:If tag="BlogName" eq="コラム">
<$mt:BlogID setvar="blog_column_id"$>
</mt:If>
MTBlogName(MTIfのtagではMT部分を省略するよ)の値を変数に代入しています。この変数を各テンプレートで呼び出して使います。
使い方
<mt:Contents content_type="サービス・商品" site_id="$blog_service_id">
// hogehoge
</mt:Contents>
テンプレート上で変数を使って呼び出すだけです。変数なので$を忘れずつけましょう。