- ホーム >
- MTエンジニアブログ >
- Movable Type 5 >
- Movable Typeプラグイン >
- MT5でウェブサイトとブログのテンプレート連携を便利にするプラグイン:ParentalInclude
MT5でウェブサイトとブログのテンプレート連携を便利にするプラグイン:ParentalInclude
皆様、MT5βさわってますか? 弊社ではバリバリ検証しているのですが、ウェブサイトとブログの連携性に問題を感じています。ウェブサイト配下にブログを作成した時に、ブログのデザインをウェブサイトと共通化したい場合、MT5だと長いコードを書かなければウェブサイトのテンプレートをインクルードできません。
ブログからたとえば以下のようなコードを書いたとします。
<$MTInclude module="ヘッダー"$>
すると、MT5の動きとしては、
- ブログのテンプレートモジュールを呼び出す
- ブログに該当するモジュールがない場合はグローバルテンプレートモジュールを呼び出す
という動きになってしまい、ウェブサイトのモジュールを読みに行ってくれません。こちらとしては、ブログはウェブサイトの配下なのだから、グローバルテンプレートモジュールを呼び出す前にウェブサイトのモジュールを呼び出してもらえれば...と思うのですが、MT5b4ではまだその連携は実装されていないようです。
では、ウェブサイトからのモジュールインクルードをMT5標準機能で実現すると、以下のようなコードになります。
<$MTWebsiteID setvar="website_id"$> ←ウェブサイトのIDを取得する <$MTInclude module="ヘッダー" blog_id="$website_id"$> ←指定したウェブサイトIDのモジュールを呼び出す
たいした手間ではないかもしれませんが、ちょっと面倒ですよね。
そこで、MTタグ一発で下記の動きを取るようなプラグインを試験的に作りました。
- ブログのテンプレートモジュールを呼び出す
- ブログにモジュールがない場合はウェブサイトのテンプレートを呼び出す
- ウェブサイトにモジュールがない場合はグローバルテンプレートモジュールを呼び出す
これでウェブサイトとブログでのテンプレート連携が便利になると思います。
プラグインのダウンロード
プラグインのインストール
pluginsディレクトリにParentalIncludeディレクトリをアップロードしてください。
プラグインの使い方
テンプレートモジュールをインクルードするために、以下のMTタグを書いてください。MTIncludeタグと同じモディファイアが利用できますが、globalモディファイヤの指定はタグ内部で上書きされるため使用できません。
<$MTParentalinclude module="モジュール名"$> テンプレートキャッシュを利用する cache="1" SSIを利用する ssi="1" キャッシュの生存時間を指定する ttl="任意の秒数"
注意事項
- ダイナミックパブリッシング、SSI、テンプレートキャッシュに対応しました
- このプラグインはブログウェアです。どなたでも無償でご利用頂けますが、感想、要望などをあなたのブログで記事として紹介頂けると幸いです。
- 本プラグインをご利用される方は必ず「プラグインご利用の際の注意事項」をお読みください
新着記事
- [2010-02-26]ParentalIncludeの最新版をアップロードしました
- [2010-02-05]システムメニューに素早くアクセスできるMovableTypeプラグイン:SpeedySystemMenu
- [2010-01-22]「カテゴリを追加」を表示しないMovableTypeプラグイン:OmitDefaultMsgAddCategory
- [2010-01-13]カテゴリ/フォルダ毎にアーカイブの生成をオン/オフできるMovableTypeプラグイン:SwitchRebuildEachArchive
- [2010-01-07]記事の総編集時間を記録するMovableTypeプラグイン:ElapsedTimer
トラックバック
コメント(14)
コメントする
この記事にご意見やメッセージがございましたらコメントをお願いいたします。
- ※ コメントは承認後に公開されます。内容によってはご返信致しかねる場合がございます。



















こんばんは、天野と申します。
ベータ4で確認をしたのですが、今の実装だとウェブサイトとグローバルに同名のテンプレートがあった場合には、グローバルが呼び出されてしまうような気がします。
どうでしょうか。
こんにちは。
ご指摘の通り、0.10ではテンプレートの検索順が、ブログ→グローバル→ウェブサイト→グローバル…と意図しない順番になっていました。
修正版の0.11をアップしておきましたので、よろしければご確認ください。
ご指摘ありがとうございました。
こんばんは。
修正が確認できました!
ありがとうございました。
初めまして、YMと言います。
こちらのプラグインを使わせていただこうと思いさっそくpluginフォルダにアップロードしてみたのですが、反映されませんでした。
システムの画面から「プラグイン」を選択すると名前がしっかりとのっているのですが、ウェブサイトとブログの画面にある「プラグイン」には名前がのっておりませんでした。
製品版では使えないということはないですか?
初めまして。ATと申します。
私もYMさん同様、MT5製品版で使用してみました。
が、再構築で「モジュールテンプレートが見つかりません」となり、うまくいきません。
製品版の対応予定はないのでしょうか?
>システムの画面から「プラグイン」を選択すると名前がしっかりとのっているのですが、
>ウェブサイトとブログの画面にある「プラグイン」には名前がのっておりませんでした。
はい。正常な動作です。
>モジュールテンプレートが見つかりません
読み込んだテンプレートモジュール内にエラーがあると、本来のエラーメッセージではなく、MTInclude がモジュールを見つけられなかった場合と同じエラーとなるため混乱し易いです。
moduleで指定されているテンプレートモジュールに、「テスト」などとだけ書いてみて、モジュールが読み込まれていないのか、それともテンプレートのエラーなのか切り分けてみてください。
ご返答ありがとうございました。
指摘の通り、読み込むテンプレートモジュールに「テスト」とだけ書き、検証しましたが、変わらずエラーが出ます。
ちなみに
ではエラーになりますが、
であればうまくいきます。
そもそも、こちらのプラグインはMT5製品版で動作確認済なのでしょうか?
開発、デバッグ、テストともにMT5.0を利用しています。
こちらでもMT5.01で試しましたがウェブサイトのモジュールを認識してくれません
単純にMTIncludeをMTParentalincludeに変える以外に必要な手段があるのでしょうか
こんにちは!
いつもプラグイン活用させていただいております!
こちらのプラグインを、MT5.01で試してみたのですが、
「モジュールテンプレートが見つかりません」と
エラーになってしまいます。
(テストとだけ書いていても。)
MT5.0で動作確認とのことですが、
5.01では対象外となるのでしょうか。
私もエラーが出てしまっていたのですが、0.11修正分と思われる部分
# Try normally except global template
範囲をコメントアウトしたら動きました。。
ちなみに、同名モジュールはグローバル・ブログに無し、ウェブサイトのモジュールをブログから読込み・・・と言う条件です。
こちら専門知識ほとんど無いためよくわかりませんがお役に立てたなら幸いです。
不具合について現象を確認いたしますが、弊社ではいまだ確認できておりません。どのテンプレートから呼び出したときに不具合が出たのか、など詳細をご連絡いただけませんでしょうか?修正の参考にさせていただきたいと思います。
よろしくお願いいたします。
さきほどバージョン0.14をアップしました。こちらで不具合を解消していますので、ご確認ください。