MTIfタグにtagモディファイアを利用する場合の注意事項
Movable TypeのMTIfタグにtagモディファイアを使ったとき、つまづいたケースがあったので、本エントリーで情報展開します。
基礎知識ですが、MTIfタグにtagモディファイアを利用すれば、テンプレートタグの値を判定条件に利用することができます。次の例は、記事タイトルが「test」であることを判定するものです。
<mt:Entries>
<mt:if tag="EntryTitle" eq="test">
[記事タイトルが「test」であればこの部分を実行]
</mt:if>
</mt:Entries>
1.問題点
問題となるサンプルは、次のコメント一覧を表示するものです。
<mt:Comments>
<mt:CommentBody>
Posted by
<mt:if tag="CommentURL">
<a href="<mt:CommentURL />" title="<mt:CommentID>"><mt:CommentAuthor default="Anonymous" escape="html" /></a>
<mt:else>
<mt:CommentAuthor default="Anonymous" escape="html" />
</mt:if>
</mt:Comments>
MTIfタグを使って、コメント投稿者のURLがある場合は、そのURLをコメント投稿者のリンクとして利用します。コメント投稿者のURLの有無は、MTCommentURLタグをtagモディファイアで判定します(青色部分)。
ここまでは問題なく動作するのですが、再構築を実施すると、赤色で示した
title="<mt:CommentID>"
の部分が出力ページに存在せず、title属性だけ削除された形で出力されてしまいます。
2.原因
原因は、MTIfタグでMTCommentURLを判定していることで、MTCommentURLの処理がMTIfタグブロック内のコンテンツにまで適用されてしまっているようです。
MTCommentURLタグには、コメント投稿者のURLを出力する以外に、URLを管理画面の「設定」→「コミュニケーション」に設定した(X)HTML要素や属性以外のものを削除する処理が含まれています。
つまり、出力結果からtitle属性が削除されたのは、この処理が行われたものと推測します。
3.対処
このケースでは、管理画面の「設定」→「コミュニケーション」→「HTMLタグを制限」にtitle属性を追加することでこの問題は解消します。
ただし、追加することで、コメント投稿でもtitle属性の入力が許容されるため、本質的な解決ではないかもしれません。
4.まとめ
今回のケースはMTCommentURLタグに特化した問題でしたが、他のテンプレートタグをMTIfタグのtagモディファイアに利用すると、また新たな問題が発生する可能があります。
MTIfタグで括った部分の出力結果が期待通りにならない場合、この辺りを疑ってみるとよいかもしれません。
- 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を利用する方法
- Movable Type 5のブログの設定で「Can't call method &quot;label&quot; on unblessed reference」が発生する問題について
- Movable Type 5.03へのアップグレードで再構築時に「Script Error」が発生する件について(つづき)
- XREA/CORESERVERでMovable TypeのCaptchaが表示されない不具合について