Movable Typeで他のブログのウィジェットセットを使う時にハマる罠


  • 公開:
  • 更新:
  • 編集:
概要 ▶ Movable Type 5をようやく使い始めたjdash2000こと笹川です。今回はMovable Typeの小ネタというかハマりやすいポイントの解消方法。MovableTypeって、MTPagesとかMTEntriesでウェブページやブログ記事が出力できますよね。MTPages・MTEntriesでテンプレートが呼び出されているウェブサイト・ブログと違うウェブサイト・ブログのウェブページやブロ
20110121-movabletype-00

Movable Type 5をようやく使い始めたjdash2000こと笹川です。
今回はMovable Typeの小ネタというかハマりやすいポイントの解消方法。



MovableTypeって、MTPagesとかMTEntriesでウェブページやブログ記事が出力できますよね。


MTPages・MTEntriesでテンプレートが呼び出されているウェブサイト・ブログと違うウェブサイト・ブログのウェブページやブログ記事を読み出す場合は、モディファイアに「blog_ids="3"」とか設定すると、ブログIDが3のウェブサイト・ブログからウェブページやブログ記事を読み出すことができます。

<MTEntries blog_ids="3" lastn="5">~~~</MTEntries>

といった書き方をします。ポータルのウェブサイトなどで便利な機能ですね。(複数のブログの最新の記事一覧を作ったりできます)




他にもMTIncludeでは<MTInclude module="サイドバー" blog_id="3">などと「blog_id="3"」と書くことでブログIDが3のウェブサイト・ブログからモジュールを読み出すことができます。

モジュール管理用のブログなどがある場合は便利ですね。(印刷通販「トクプレ.」DTPブログなどはテンプレート管理用のブログが別途用意してあってそこからモジュールを読み出しています)

実際にエントリーなどを書くブログとは別にブログを用意してそこでテンプレートを集めておくと、同じデザインのブログを作る際にわかりやすくて良いように思います。


ですが、ここに少し罠が。


それは、ウィジェットセットです。


ウィジェットセットは<MTWidgetSet name="メニュー">などで呼び出せます。
この<MTWidgetSet name="メニュー">は指定がなければ当然現在構築しているブログのウィジェットセットがあるかないかを判断して無ければエラーを返す様になっています。

では先ほどと一緒に他のテンプレート管理用のブログにウィジェットセットを用意しておいて、読み出す場合はどうしたらよいのでしょうか?

考えつくのは先ほどのMTIncludeと同じ

<MTWidgetSet name="メニュー" blog_id="3">

ですよね。


でも、これは動かないんです(「blog_id="3"」が無視される)。なぜ動く様にしていないのかわからないのですが…。モジュールが「blog_id="3"」で読み出せるならウィジェットセットもそうすべきだと思うのですが…。


ということで解決策は以下の通り。


MTMultiBlogを使います。

<MTMuliBlog blog_ids="3">
    <MTWidgetSet name="メニュー">
</MTMuliBlog>

こうやって明示的にウィジェットセットはブログIDが3の所から呼び出して下さい!と記述することで他のブログにあるウィジェットセットが使用できない問題を回避できます。

これは結構ハマるというかMTWidgetSetにblog_idが効かないのに気付くまでわからなくてハマるのですよね。注意しましょう。

バージョンが上がったら直らないかな~、とか期待を込めてポスト。

カテゴリー:

このページをぜひシェアしてください