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

トラックバック

コメント(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をアップしました。こちらで不具合を解消していますので、ご確認ください。

コメントする

この記事にご意見やメッセージがございましたらコメントをお願いいたします。

  • ※ コメントは承認後に公開されます。内容によってはご返信致しかねる場合がございます。

MTエンジニアブログ

配布プラグイン一覧

ParentalInclude
MT5でウェブサイトとブログのテンプレート連携を便利にするプラグイン
DuplicateEntry
ブログ記事を複製または移動するMovableTypeプラグイン
NotifyAnythingChanged
何かが起きたらメールで通知するMovableTypeプラグイン
rssEntry
取込んだRSSをエントリとして書き出すMovableTypeプラグイン
AutoTagging
面倒な記事のタグ付けを自動化する
FutureRebuild
日時を指定してページを再構築する
EntryImExporter
エントリをCSVに書出したり、CSVから一括登録するMovableTypeプラグイン
MailPack
Movable Typeで簡単携帯投稿!メール投稿プラグイン
DirectoryUtility
カテゴリ・フォルダの階層を表示したり、親フォルダを表示したり、何かと便利なプラグイン
CSVList
CSVデータを整形して表示する
PageBute
静的ページ用ページ分割プラグイン

注目記事

RSS

ページの先頭へ戻る