Movable Type 7で子サイトから自分の親サイトのSiteIDを取得する

  • 投稿者:
  • カテゴリ:
このエントリーをはてなブックマークに追加

メモのようなものですが、タイトルの通り子サイトから自分の親サイトのSiteIDの取り方です。

親サイトのサイトIDが必要な場合、決め打ちでテンプレートに書いてしまうということもできます。

ただし、その場合、リニューアルやサーバー移転などでIDが変わることがあったりすると修正が必要になってしまいます。自動的に取得するようにしておくと修正の必要がないのでトラブル防止にもなるかなと思います。

最初は下記のように書いてました。

<mt:SetVarBlock name="parent_site_id">
// SiteID取得ここから
  <mt:Sites>
    <mt:SiteID>
  </mt:Sites>
// SiteID取得ここまで
</mt:SetVarBlock>

上記の書き方でも親サイトのサイトIDは取れますが、この場合はシステム内のすべての親サイトのIDを取得してきてしまいます。

子サイトから自分の親サイトだけのIDを取得したい場合、親サイトがひとつなら上記の書き方でもいいのですが、親サイトが複数あるとシステム内のすべての親サイトのIDを取得してきてしまうので、望んでいる結果とは違ってしまいます。(子サイトが属していない上位のサイトを親サイトと呼ぶのはちょっと違和感ありますが...)

自分の親サイトのサイトIDを取得するために下記のように「MTSiteParentSite」を使ったMTMLに修正しました。

<mt:SetVarBlock name="parent_site_id">
// SiteID取得ここから
  <mt:SiteParentSite>
    <mt:SiteID>
  </mt:SiteParentSite>
// SiteID取得ここまで
</mt:SetVarBlock>

MTSiteParentSiteは子サイトのコンテクストで、自分の親サイトの情報を引っ張ってくるためのブロックタグです。

MTSiteParentSite

このエントリーをはてなブックマークに追加