- ホーム >
- 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-08-02]PageBute3.5.0を公開!
- [2010-07-07]頻繁に使われるメニューに素早くアクセスできるMovableTypeプラグイン:MostlyUsedMenu
- [2010-07-05]最近使ったメニュー項目に素早くアクセスできるMovableTypeプラグイン:RecentUsedMenu
- [2010-06-30]定期的にパスワード変更を求めるMovableTypeプラグイン:PasswordUpdateReminder
- [2010-06-24]再構築残り時間を表示するMovableTypeプラグイン:RebuildRemainTimer
トラックバック
- ウェブサイトのテンプレートを自身の文脈で評価させる
若干長い題名ですが、内容は難しくありません。MT5でブログ(子)からウェブサイ...
Technology on Information2010年2月16日 07:40
コメント(17)
コメントする
この記事にご意見やメッセージがございましたらコメントをお願いいたします。
- ※ コメントは承認後に公開されます。内容によってはご返信致しかねる場合がございます。




















こんばんは、天野と申します。
ベータ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
範囲をコメントアウトしたら動きました。。
ちなみに、同名モジュールはグローバル・ブログに無し、ウェブサイトのモジュールをブログから読込み・・・と言う条件です。
こちら専門知識ほとんど無いためよくわかりませんがお役に立てたなら幸いです。
不具合について現象を確認いたしますが、弊社ではいまだ確認できておりません。どのテンプレートから呼び出したときに不具合が出たのか、など詳細をご連絡いただけませんでしょうか?修正の参考にさせていただきたいと思います。
よろしくお願いいたします。
はい、最初は単純に該当モジュールを読み込んでいるテンプレートを全て書き換え、再構築を押したものでどのテンプレート・・・と覚えていないのですが(すみません・・)、
その後それらのタグは元に戻し、
一旦検証テストで、子ブログにてカスタムインデックステンプレートを作成
<mt:BlogParentWebsite><$MTWebsiteID setvar="website.id"$></mtblogparentwebsite>
<mt:include module="testモジュール" blog_id="$website.id">
だけ書いて正常に動作するのを確認した後、
<mt:Parentalinclude module="testモジュール">
として「保存と再構築」ボタンを押したところ、モジュールが存在しないエラーが出ました。
さきほどバージョン0.14をアップしました。こちらで不具合を解消していますので、ご確認ください。
こんにちは。
便利なプラグインですね。
ところでシステムテンプレートでは動かないのでしょうか?
検索・タグ検索でエラーがでます。
>ところでシステムテンプレートでは動かないのでしょうか?検索・タグ検索でエラーがでます。
確認できていませんでした。すみません。時間を見て調査したいと思いますー。