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回のインクルードは大丈夫ですが、入れ子のインクルードがあると再構築エラーになるようです。大雑把な説明ですいませんが、当方の設定ミス等がありましたらご指摘ください。
- MovableTypeプラグインの独自CGIをNginxに対応させる方法
- Movable Type 5で「Got an error: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?)」というエラーになる場合の対処
- 旧バージョンのMTでPerl5.26(Perl5.24以降)に対応する方法
- MT6.2のファイルアップロードで「Undefined subroutine &POSIX::strftime」になる問題の対処
- Movable Typeのファイルアップロードで「アップロードしたファイルは大きすぎます。」というエラーになる場合の対処
- Movable Typeのパスワード変更で「URLが不正です。」というエラーなる件についての対処
- Movable Typeで「Cannot find column 'blogs' for class 'MT::Blog'」となる場合の対処
- Movable TypeでMTPageNextタグが効かなくなる不具合について
- Movable Typeの復元で「Request-URI Too Large」になるときの対処
- サーバ故障と「Connection error: Too many connections」エラーおよびMySQLテーブル破損について
- Movable Typeでエラー発生箇所を特定する方法
- IE9でMovable Typeを利用する方法
- MTIfタグにtagモディファイアを利用する場合の注意事項
- Movable Type 5のブログの設定で「Can't call method &quot;label&quot; on unblessed reference」が発生する問題について
- Movable Type 5.03へのアップグレードで再構築時に「Script Error」が発生する件について(つづき)
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に属するテンプレートモジュールを検索してしまうという、バグであることも分かりました。
情報ありがとうございました。