MTのコメント通知メールに削除用URIをつける
livedoor Blog では、コメントスパム対策として、コメント通知メール中に、コメント削除用 URI (URL) が含まれています。この URI にアクセスすると、コメントを削除するかどうか訊かれる画面になります。簡単な手順でコメントを削除できるのでとても便利です。この機能が Movable Type にもあったらいいなと思っていたら、やはり開発していた人がいました。
Yoz Grahame’s Cheerleader: Seven quick tips for a spam-free blog という記事の中で紹介されていました。紹介されている 7 つの秘訣のうちの6番目です。lib/MT/App/Comments.pm というファイルの 236 行目あたりを修正します。(2.661 で日本語化している場合です。)
$Text::Wrap::cols = 72; $body = Text::Wrap::wrap('', '', $body) . "\n$link_url\n\n" . $app->translate('IP Address:') . ' ' . $comment->ip . "\n" . $app->translate('Name:') . ' ' . $comment->author . "\n" . $app->translate('Email Address:') . ' ' . $comment->email . "\n" . $app->translate('URL:') . ' ' . $comment->url . "\n\n" . $app->translate('Comments:') . "\n\n" . $comment->text . "\n"; $body .= "\nTo delete this comment, click this link:\n". $app->{cfg}->CGIPath . "mt.cgi?__mode=delete_confirm&" . "_type=comment&blog_id=" . $blog->id ."&id=".$comment->id ."\n"; MT::Mail->send(\%head, $body);
これで、コメント通知メールに削除用 URI がついてきます。
URI にアクセスするとコメントを削除できます。
ただし、削除した後、エントリー編集画面に戻ってエントリーを再保存する必要があるのですが、ここがうまく行かずにエラーとなります。そこで、上記コードを書き換えて、いきなり削除画面ではなくエントリーの画面のコメント編集欄に移動するようにしました。
$Text::Wrap::cols = 72; $body = Text::Wrap::wrap('', '', $body) . "\n$link_url\n\n" . $app->translate('IP Address:') . ' ' . $comment->ip . "\n" . $app->translate('Name:') . ' ' . $comment->author . "\n" . $app->translate('Email Address:') . ' ' . $comment->email . "\n" . $app->translate('URL:') . ' ' . $comment->url . "\n\n" . $app->translate('Comments:') . "\n\n" . $comment->text . "\n"; $body .= "\nTo edit or delete this comment, click this link:\n". $app->{cfg}->CGIPath . "mt.cgi?__mode=view&" "_type=entry&blog_id=" . $blog->id ."&id=".$entry->id ."#editcomments\n"; MT::Mail->send(\%head, $body);
そして、tmpl/cms/edit_entry.tmpl ファイルの 712 行目あたりにある form 要素に editcomments という id を付加します。
<td valign="top" width="500"> <form id="editcomments"> <table border="0" cellspacing="0" cellpadding="3" width="500">
これでコメント通知メールに記載された URI から、該当エントリーのコメント編集欄に移動することができます。この方法ならエラーも発生せず、エントリーの再保存も楽に行なえるのでお薦めです。
二番目のサンプルコードが間違っていたので修正しました。
試してみたのに期待通りに動かなかった方、すみません。
コメント by 津田ふみか — 2004-05-8 11:34
コメントとトラックバック通知メールに編集用URLを
スパムコメントやスパムトラックバックの通知をメールで受けた際,それを削除するために該当するエントリーの編集画面に到達するまでが面倒だったので,通知メールに編集画面へのURLをつけることにしました. 参考にしたのはこちら. MTのコメント通知メールに削除用URIを…
トラックバック by HeavenWolf — 2004-07-18 02:10
MTの通知メールに削除用URIを
コメントがあったとき、あるいはトラックバックがあったときに、MTから通知メールが届くように設定しています。 エントリ数が増えていくにつれて、MT自体のエラーが頻繁に発生するようになってしまい、コメントやトラックバックの重複が増えてきてしまいました。 その重複…
トラックバック by cocoons.org* — 2005-03-27 17:47