Mach3.laBlog

MT備忘録: blog_idに関わるスニペットメモ

この記事は賞味期限切れです。(更新から1年が経過しています)

ここ最近MovableType構築のお仕事が進行中なのですが、
あまりにもMTを弄るのが久しぶり過ぎてかなり泡を食っています。
(なんせ以前使ったバージョンは3.xだった気が…)
そんな中で生まれた苦し紛れなスニペットをメモっておきます。

はじめにお断りしておくと、今回のお仕事は
「本番環境を直接触れず、ローカルで構築したMTのバックアップデータを納品する。
尚、本番環境でPHPは動作しない。」
というちょっと限定的な状況です。

名前からblog_idを引く

例えば、親サイトから、ある子ブログの投稿一覧を出力したい。
本番環境で作業できるのならばblog_id決め打ちで良いと思うのですが、
バックアップ+復元を繰り返していくとblog_idが安定せず、
連番で増えて行ってしまう場合があります。

そこで、ブログのタイトルからblog_idを引いてみます。

<mt:Blogs include_blogs="site">
    <mt:SetVarBlock name="blog_name"><mt:BlogName /></mt:SetVarBlock>
    <mt:If name="blog_name" eq="最新情報">
        <mt:SetVarBlock name="news_id"><mt:BlogID /></mt:SetVarBlock>
    <mt:ElseIf name="blog_name" eq="導入事例">
        <mt:SetVarBlock name="case_id"><mt:BlogID /></mt:SetVarBlock>
    </mt:If>
</mt:Blogs>

サイトに所属する全てのブログの中で、タイトルが一致する物を拾ってIDをSetVarしています。
上の例では「最新情報」というブログのIDを「news_id」に、
「導入事例」というブログのIDを「case_id」に格納しています。
あとは格納されたIDを使ってなんやかんやしましょう。

<mt:Entries blog_id="$news_id">
    <mt:Ignore><!--なんやかんや--></mt:Ignore>
</mt:Entries>

もうちょっとスマートな書き方がありそうな気もせんではないですが…
もしご存知の方いたら是非ご教示下さい。

親サイトのモジュールを子ブログで使う

これはMT使いの中ではごく当たり前かもしれませんね。
子ブログでMTIncludeしても、子ブログのモジュールの中から探してしまうので、
blog_idモディファイアで、どのブログのモジュールから探すか指定してやりましょう。

<mt:Ignore><!-- 親サイトのIDを取得してwebsite_idに格納 --></mt:Ignore>
<mt:BlogParentWebsite>
    <mt:SetVarBlock name="website_id"><mt:WebsiteID></mt:SetVarBlock>
</mt:BlogParentWebsite>

<mt:Ignore><!-- blog_idで指定してモジュールをインクルード --></mt:Ignore>
<mt:Include module="module_name" blog_id="$website_id" />

純粋にMTの機能だけでアレコレしようとすると、 なんだかモッサリなコードになってしまいますね…。

コメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*