モジュールテンプレートのシステム内共有方法

例えば、ブログ1とほぼ同じレイアウトのブログ2を
作ろうとしたとき、ブログ1で作ったテンプレートモジュールを
ブログ2で利用したい時の方法です。

MTMultiBlogを使う

こんな具合にすれば、ブログ2でブログ1のテンプレートを使えます。

<MTInclude module="header" blog_id="1">

これで「ブログ1にあるheaderというモジュールを呼び出す」
という意味になります。

ブログ2のMTBlogURL?

先の例では「モジュールが呼び出されるだけ」です。
つまり、そのモジュールの中でMTBlogURLなんかが使われていると、
ブログ2のMTBlogURLが表示されてしまうのです。


これは実は不便です。
例えば画像。ページのヘッダ画像などの指定をしている場合、
参照する画像が同じならば、ブログ1でもブログ2でも同じ画像を
見に行って欲しいってのが人情ですね。

# ブログ1のheaderモジュール
<div id="header">
<img src="<$MTBlogURL$>images/header.jpg">
</div>

# ブログ1での表示結果
<img src="http://blog1.foo.jp/images/header.jpg">

# ブログ2での表示結果
<img src="http://blog2.foo.jp/images/header.jpg">

↑同じ画像を参照したいのに、URLが異なってしまう

ということで、ブログ1の表示結果をブログ2に持って行きたい
ときには、MTMultiBlogを使ってあげます。


MTMultiBlog | テンプレートタグリファレンス
http://www.movabletype.jp/documentation/appendices/tags/multiblog.html


ここの内容を読んでみると、

システムで管理している複数のブログの情報を表示します。

ということで、ブログの情報、つまり表示結果そのものを引っ張ってきます。
こんな風にします。

<MTMultiBlog include_blogs="1">
<MTInclude module="header" blog_id="1">
</MTMultiBlog>

こうすることでブログ1の内容をそのまま表示させる事ができます。

とはいえローカルの内容も表示させたい

とはいえ、ローカルな内容も表示させたい事があります。
例えば、「最近の記事一覧」。リストの頭に表示する
タイトル画像は全ブログ共通で、リストの中身は各ブログで
通化させたい…というわがままな状態ですね。


そういうものに対応するには、MTMultBlogLocalBlogを使います。
このタグで囲まれた部分は、「各ブログローカルなモノを
参照する」という風にできます。

# モジュールテンプレート
<div id="header">
<img src="<$MTBlogURL$>images/header.jpg">
<MTMultiBlogLocalBlog>
<MTEntries lastn="5">
<$MTEntryTitle$><br>
</MTEntries>
</MTMultiBlogLocalBlog>
</div>

↑こうするとMTEntries内は各ブログのローカルな内容が
 表示される

# 呼び出し側
<MTMultiBlog include_blog="1">
<MTInclude module="header" blog_id="1">
</MTMultiBlog>

こんな感じで使います。

注意

  • コメントプレビューは各ブログで書いた方が無難
  • mt.jsは各ブログに置かないとコメントが動作しない


MTMultiblogの使い方(MT3とMT4での違いについて) - chibipoppo blog
http://www.arearea.org/blog/2007/11/mtmultiblogmt3mt4.html


MTMultiBlog | テンプレートタグリファレンス
http://www.movabletype.jp/documentation/appendices/tags/multiblog.html


小粋空間: Movable Type で他のブログのテンプレートモジュール・ウィジェットを利用する
http://www.koikikukan.com/archives/2009/01/14-015555.php