エンジニアブログ

エンジニアブログ
Movable Type プラグイン

MT5でウェブサイトとブログのテンプレート連携を便利にするプラグイン:ParentalInclude

小林 2009年10月26日

皆様、MT5βさわってますか? 弊社ではバリバリ検証しているのですが、ウェブサイトとブログの連携性に問題を感じています。ウェブサイト配下にブログを作成した時に、ブログのデザインをウェブサイトと共通化したい場合、MT5だと長いコードを書かなければウェブサイトのテンプレートをインクルードできません。

ブログからたとえば以下のようなコードを書いたとします。

<$MTInclude module="ヘッダー"$>

すると、MT5の動きとしては、

  1. ブログのテンプレートモジュールを呼び出す
  2. ブログに該当するモジュールがない場合はグローバルテンプレートモジュールを呼び出す

という動きになってしまい、ウェブサイトのモジュールを読みに行ってくれません。こちらとしては、ブログはウェブサイトの配下なのだから、グローバルテンプレートモジュールを呼び出す前にウェブサイトのモジュールを呼び出してもらえれば...と思うのですが、MT5b4ではまだその連携は実装されていないようです。

では、ウェブサイトからのモジュールインクルードをMT5標準機能で実現すると、以下のようなコードになります。


  <$MTWebsiteID setvar="website_id"$> ←ウェブサイトのIDを取得する

<$MTInclude module="ヘッダー" blog_id="$website_id"$> ←指定したウェブサイトIDのモジュールを呼び出す

たいした手間ではないかもしれませんが、ちょっと面倒ですよね。

そこで、MTタグ一発で下記の動きを取るようなプラグインを試験的に作りました。

  1. ブログのテンプレートモジュールを呼び出す
  2. ブログにモジュールがない場合はウェブサイトのテンプレートを呼び出す
  3. ウェブサイトにモジュールがない場合はグローバルテンプレートモジュールを呼び出す

これでウェブサイトとブログでのテンプレート連携が便利になると思います。

プラグインのダウンロード

ParentalInclude0.14.zip

プラグインのインストール

pluginsディレクトリにParentalIncludeディレクトリをアップロードしてください。

プラグインの使い方

テンプレートモジュールをインクルードするために、以下のMTタグを書いてください。MTIncludeタグと同じモディファイアが利用できますが、globalモディファイヤの指定はタグ内部で上書きされるため使用できません。

<$MTParentalinclude module="モジュール名"$>

テンプレートキャッシュを利用する
cache="1"

SSIを利用する
ssi="1"

キャッシュの生存時間を指定する
ttl="任意の秒数"

注意事項

  • ダイナミックパブリッシング、SSI、テンプレートキャッシュに対応しました
  • このプラグインはブログウェアです。どなたでも無償でご利用頂けますが、感想、要望などをあなたのブログで記事として紹介頂けると幸いです。
  • 本プラグインをご利用される方は必ず「プラグインご利用の際の注意事項」をお読みください