March 29th, 2004
避免重複按下送出而造成多個迴響的造成
緣起:本來是在Zonble’s Blog上面要留言,卻發現自己不小心留了好幾個迴響,於是回到自己最近很常去的一個MT技術網站MTExtension找一下相關的檔案,裡面有講到一個避免的方法,就是修改一下MT的一些程式碼
詳細狀況,請看詳細敘述
-
若是一般方式請修改MT目錄下的 lib/MT/App/Comments.pm
-
若是有安裝MT-Blacklist的話請修改 exlib/jayallen/MTBIPost.pm
請貼以下的程式碼在 $comment->save; 之前
BEGIN HACK Avoid Duplicate Comments
## http://www.nonplus.net/software/mt/AvoidingDuplicateComments.htm
if(my @existing_comments = MT::Comment->load({
blog_id => $comment->blog_id,
entry_id => $comment->entry_id})) {
foreach my $c (@existing_comments) {
next unless (($c->author||'') eq ($comment->author||'')
&& ($c->email||'') eq ($comment->email||'')
&& ($c->text||'') eq ($comment->text||''));
my $link_url;
if (!$q->param('static')) {
my $url = $app->base . $app->uri;
$url .= '?entry_id=' . $q->param('entry_id');
$link_url = $url;
} else {
my $static = $q->param('static');
if ($static == 1) {
$link_url = $entry->permalink;
} else {
$link_url = $static . '#' . $c->id;
}
}
return $app->redirect($link_url);
}
}
## END HACK Avoid Duplicate Comments