モジュールテンプレートのシステム内共有方法
例えば、ブログ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