mt.VIcunaテンプレートで、textareaの初期値にAdd Your Commentを書いてフォーカス時に初期値がクリアされるという動作についてです。
ネタ元は、mt.Vicuna フォーラムのトピック、「コメントプレビュー表示時の Add Your Comment 表示について」です。
コメントを入力して -> プレビュー すると、プレビュー画面下のコメント欄には、自分で入力したコメントではなく Add Your Comment が表示されてしまい、そのままPOSTすると Add Your Comment がコメント投稿されてしまいます。
動作としては、textarea要素の初期値は、「Add Your Comment」として、フォーカスされたとき(onfocus)に初期値が消えるというものです。キーワード検索のテンプレートにおける動作と同じようなもので、基本は以下のような形となります。
*見やすくするために適当な箇所で改行してます
<textarea id="comment-text" class="inputField" name="text" rows="8" cols="50" onfocus="if (this.value == 'Add Your Comment') this.value = '';" onblur="if (this.value == '') this.value = 'Add Your Comment';"> Add Your Comment </textarea>
で、自分のところでは、上のような処理をいれているのですが、コメントフォームのテンプレートモジュールがシステムテンプレートの場合も兼ねているために、システムテンプレートであったときの処理も併記する必要があるために、以下のような形で使っています。
*実際は改行せずに一行です。
<textarea id="comment-text" class="inputField" name="text" rows="8" cols="50" <MTIf name="tempName" like="individual"> onfocus="if (this.value == 'Add Your Comment') this.value = '';" onblur="if (this.value == '') this.value = 'Add Your Comment';"</MTIf>> <MTIf name="tempName" eq="system_comment_preview"> <$MTCommentBody autolink="0" sanitize="0" convert_breaks="0" encode_html="1"$> <MTElseIf like="individual">Add Your Comment</MTIf> </textarea>
MTIf name="tempName" eq="system_comment_preview以降の処理がコメントプレビューだったときに、テキストエリアに書き込まれた内容を表示させるためのものです。
MTCommentBodyタグで、コメントの内容をテキストエリアに表示させます。この処理にもちょっと不満なところもあって、コメントに何もかかれない状態でプレビューしますと、Add Your Commentになっちゃいます。ま、あまりありえないんですけど。
<MTElseIf like="individual">Add Your Commentと書いた部分についてですが、「コメントプレビューテンプレート」以外のときに初期値を書くためのものです。もともとは、MTElseIfのところは、MTElseだけで書いていたような気がしたのですが、多分MTElseだけで処理してよさそう(のはず)。