コメント・プレビューで実体参照が無効になる不具合を解消する

コメント・プレビューで実体参照が無効になる不具合を解消する

Posted at July 6,2006 12:38 AM
Tag:[Comment, MovableType, TroubleShooting]

Movable Type のエントリー・アーカイブでコメントを書き、「確認」をクリックしてコメント・プレビュー画面に遷移すると、コメントに書いた実体参照、例えば

<$MTBlogURL$>

<$MTBlogURL$>

という風に、「&lt;」や「&gt;」が通常のタグとして表示されてしまいます。

この不具合を解消するには、コメント・プレビューテンプレートのテキストエリア表示部分に用いられている MT タグ「MTCommentPreviewBody」に下記の encode_html 属性を追加します。

デフォルトテンプレート

      :
<p id="comments-open-text">
   <label for="comment-text">コメント: <MTIfAllowCommentHTML>(スタイル用のHTMLタグが使えます)</MTIfAllowCommentHTML></label>
   <textarea id="comment-text" name="text" rows="10" cols="50"><$MTCommentPreviewBody autolink="0" sanitize="0" convert_breaks="0" encode_html="1"$></textarea>
</p>
      :

公開テンプレート

      :
<p id="comments-open-text">
   <label for="comment-text">コメント: <MTIfAllowCommentHTML>(スタイル用のHTMLタグが使えます)</MTIfAllowCommentHTML></label>
   <textarea id="comment-text" name="text" tabindex="10" accesskey="t" rows="10" cols="50"><$MTCommentPreviewBody autolink="0" sanitize="0" convert_breaks="0" encode_html="1"$></textarea>
</p>
      :

余談ですが、この事象は Movable Type 3.2 以降かつ、3.1 以前のテンプレートを使用していない場合に発生します。理由は、3.1 まではコメント・プレビューテンプレートで MTCommentFields という、コメントフィールドを丸ごと表示するタグが使われており、タグの内部処理で encode_html が行われていたからです。

私のサイトのコメント・プレビューは最近までこの MTCommentFields を使っておりまして、3.2 のデフォルトテンプレートに準拠させてから本エントリーの不具合が発生しておりました(放置してしまってすいません)。
テンプレートを改修致しましたので、「確認」をクリックしても実体参照は正常に引き継がれるようになっています。

なお、この MTCommentFields タグ、マニュアルには掲載されていませんが、3.3 でも動作するようです(ただし 3.1 の処理のままです)。

関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)