コメントスパム対策のために作成したモジュールで、クッキーを使用しない場合「コメント確認」画面に名前やURLが引き継がれない、という不具合があることが判明。なんとかその不具合を回避する対策を探ってみた。
導入したモジュールをじっと眺めてみると、「コメントの確認」画面のフォームの各入力欄(名前、メールアドレス、URL)は、javaスクリプトによってクッキーからデータを拾ってくる形になっている。確かにこれだと、投稿時にクッキーを使用しない設定を選んだ場合、次画面にデータを受け渡すことはできないわけだ。
一方、正常にデータが受け渡されているコメントの内容部分を見ると、 <$MTCommentPreviewBody$>というタグが使用されている。どうもこの <$MTCommentPreview?$>というタグによってプレビュー画面へのデータ受け渡しが可能らしいことに気づいたので、まずはこのタグをググってみるww
そして、megu’s blogで解決方法を発見。さっそくそれに倣ってモジュールの最終部分を以下のように書き換えてみた。
<script type=”text/javascript” language=”javascript”>
<!–
if (document.comments_form.email != undefined)
document.comments_form.email.value = ‘<$MTCommentPreviewEmail encode_js=”1″$>’;
if (document.comments_form.author != undefined)
document.comments_form.author.value = ‘<$MTCommentPreviewAuthor encode_js=”1″$>’;
if (document.comments_form.url != undefined)
document.comments_form.url.value = ‘<$MTCommentPreviewURL encode_js=”1″$>’;
if (getCookie(“mtcmtauth”) || getCookie(“mtcmthome”)) {
document.comments_form.bakecookie[0].checked = true;
} else {
document.comments_form.bakecookie[1].checked = true;
}
//–>
</script>
これで試してみたところ、クッキーを使わない場合でも無事、確認画面にデータが受け渡されるようになった。ほっ(笑)。ひとまず安心・・・。
ただし、いったんクッキー使用を選択して確認画面を表示したあとで「クッキーを使用しない」を選択し直すと、名前欄などの情報がクリアされてしまう・・・。うーむ。これは一体どうしたものか。まだまだ改善が必要なようだ。
なお、プレビュー用に使えるタグは、ヘルプ・マニュアルの「テンプレート・タグ」→「コメントのプレビュー」に列挙してある。