MTのコメント通知メールに削除用URIをつける

2004-4-29 16:17
このエントリーをはてなブックマークに追加

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 から、該当エントリーのコメント編集欄に移動することができます。この方法ならエラーも発生せず、エントリーの再保存も楽に行なえるのでお薦めです。

  • ブックマーク : アクセス: 7,399回
  • カテゴリー : MovableType

3 Comments

  1. 二番目のサンプルコードが間違っていたので修正しました。
    試してみたのに期待通りに動かなかった方、すみません。

    コメント by 津田ふみか2004-05-8 11:34

  2. コメントとトラックバック通知メールに編集用URLを

    スパムコメントやスパムトラックバックの通知をメールで受けた際,それを削除するために該当するエントリーの編集画面に到達するまでが面倒だったので,通知メールに編集画面へのURLをつけることにしました. 参考にしたのはこちら. MTのコメント通知メールに削除用URIを…

    トラックバック by HeavenWolf2004-07-18 02:10

  3. MTの通知メールに削除用URIを

    コメントがあったとき、あるいはトラックバックがあったときに、MTから通知メールが届くように設定しています。 エントリ数が増えていくにつれて、MT自体のエラーが頻繁に発生するようになってしまい、コメントやトラックバックの重複が増えてきてしまいました。 その重複…

    トラックバック by cocoons.org*2005-03-27 17:47

Sorry, the comment form is closed at this time.

34 queries. HTML convert time: 0.066 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2017 @ futuremix.org ログイン