MTMultiBlog タグブロック内での MTInclude タグの入れ子について
現在、Movable Type の MultiBlog プラグインでポータルブログの実験中ですが、MTInclude タグの入れ子があると再構築でエラーになるようです。
確認したのは 4.23 + Windows ローカル環境のみで、他の環境は確認できていません。
まず、ポータルブログにするブログのメインページに次のようなサブテンプレートがあります。
<mt:Entries>
<$mt:Include module="ブログ記事の概要"$>
</mt:Entries>
サブテンプレートからインクルードしている「ブログ記事の概要」テンプレートモジュールでは、さらに MTInclude タグを使って「ブログ記事のメタデータ」テンプレートモジュールをインクルードしています。メタデータには投稿日時や投稿者、コメント件数やトラックバック件数など、ブログ記事の投稿情報が含まれます。
次に、ポータルブログの収集対象となるブログの作成と、各ブログの MultiBlog プラグインの設定を行ったあと、上記のサブテンプレートを MTMultiBlog タグで括り、
<mt:multiBlog mode="loop">
<mt:Entries>
<$mt:Include module="ブログ記事の概要"$>
</mt:Entries>
</mt:multiBlog>
とすると、メインページの再構築時に次のエラーが発生します。

MTInclude でインクルードしている内容を元テンプレートに貼り付けると、再構築エラーは解消します。
「ブログ記事の概要」テンプレートモジュールでは「カテゴリ」テンプレートモジュール、「タグ」テンプレートモジュールをインクルードしていますが、それらについても同様です。
要約すると、MTMultiBlog タグから1回のインクルードは大丈夫ですが、入れ子のインクルードがあると再構築エラーになるようです。大雑把な説明ですいませんが、当方の設定ミス等がありましたらご指摘ください。
- Movable Typeでエラー発生箇所を特定する方法
- IE9でMovable Typeを利用する方法
- MTIfタグにtagモディファイアを利用する場合の注意事項
- Movable Type 5のブログの設定で「Can't call method "label" on unblessed reference」が発生する問題について
- Movable Type 5.03へのアップグレードで再構築時に「Script Error」が発生する件について(つづき)
- XREA/CORESERVERでMovable TypeのCaptchaが表示されない不具合について
- Movable Type 5.03へのアップグレードで再構築時に「Script Error」が発生する件について
- Movable Typeの復元時に「Malformed UTF-8 character~」エラーとなる対処について
- Movable Type 5で「テンプレート「Create Entry」の再構築中にエラーが発生しました」というエラーが発生する件について
- Movable Type 5で「サーバーに Image::Magickか、Image::Magickの動作に必要な他のモジュールがインストールされていません。」となる事象について
- ダイナミックパブリッシングでURLが重複する事象について
- Movable Type 5(MT5)の FastCGI 環境で管理画面の URL が変更されない事象について
- ブログ記事タイトルを改行できるようにする
- MTEntries タグ + sort_by モディファイアでブログ記事がソートされない件
- 日本語ドメインによると EntryTrackbackData タグの不具合
- Movable Type 5.0(MT5.0)の Include タグと append モディファイア・prepend モディファイアの組み合わせについて
- Movable Type 5.0(MT5.0)で更新通知が送信できない不具合と対処
- Movable Type 5.0 のスケジュールタスクでエラーになる件について
- Movable Type で「~」が「?」に文字化けする事象や日本語のタグが合算できない不具合を解消する
- Movable Type 4.261 でのダイナミックパブリッシングエラーについて
MT4では、
引っ張ってきている先のテンプレートじゃなく、
じぶんとこのテンプレートでモジュール探してエラーになるようです。
入れ子先のMTInclude module="・・・にも
ブログのIDを指定してやれば大丈夫だとか。
<meta name="keywords" content="<$MTInclude module="キーワード"$>" />
のモジュールである「キーワード」がどこのブログから取得されて来るべきなのかをより明確にするため、
<meta name="keywords" content="<$MTInclude blog_id="1" module="キーワード"$>" />
http://www.akinakano.com/mt/2007/10/mtmultiblog.php
↑
上記ページで助けられました^^
同じブログ ID のテンプレートモジュールを読み込む場合、blog_id モディファイアで指定しなくても構いませんが、そのテンプレートモジュールを他のブログ ID のブログで読み込んでいる場合は、指定しておく必要があります。
もし、読み込み先のブログに「ヘッダーコンテンツ」と「概要」テンプレートモジュールがあり、そのテンプレートモジュールを利用したい場合は、「ヘッダー」テンプレートモジュールで blog_id の指定をおこなう必要はありません。
http://www.movabletype.jp/blog/multiblog_template_module.html
sixapartの説明ではこんな感じでしたが
↑とは違う現象なんですかね?
>指定をしたらエラー出ないようですよさん
こんにちは。
確かにblog_idを指定したらエラーが出なくなりました。
MultiBlogタグでincludeタグを利用すると、処理中のブログIDに属するテンプレートモジュールを検索してしまうという、バグであることも分かりました。
情報ありがとうございました。
