如何以编程方式删除drupal中的论坛评论?

时间:2011-08-01 10:30:23

标签: drupal drupal-comments

在我的网站中,我需要为用户提供删除选项,以便在论坛中删除自己的评论。我想删除注释并更新注释节点统计信息。是否有可用于删除注释的Drupal函数?

4 个答案:

答案 0 :(得分:1)

在Drupal 7中有comment_delete_multiple()调用删除注释中涉及的钩子,并通过_comment_update_node_statistics()更新节点统计信息。它需要一系列注释ID。

在Drupal 6中,没有等效的函数,但你写了Drupal 7函数的等价函数,考虑到:

  • Drupal 6没有处理交易的功能
  • 在Drupal 6中,删除评论时调用的钩子名称不同
  • Drupal 6没有实体字段
  • Drupal 6没有db_delete()comment_load_multiple()
  • 的任何等效内容

答案 1 :(得分:0)

答案 2 :(得分:0)

像...一样的东西。

<?php

// you'll need to include /modules/comment/comment.admin.inc
module_load_include('inc', 'comment', 'comment.admin');

// I'm assuming you have access to the cid, the unique
// identifier for comments stored in the {comments} table
$comment = _comment_load($cid);
_comment_delete_thread($comment);
_comment_update_node_statistics($comment->nid);

?>

此解决方案适用于Drupal 6,但您可以从评论模块借用包含文件,并在其他版本中劫持其功能。

我不确定扩展核心论坛功能的contrib模块(如Advanced Forum)是否提供了一个选项,而无需编写自定义代码,但您可能需要查看它。

答案 3 :(得分:0)

Drupal 7 使用comment_delete()

<?php

    //Delete single comment
    $cid = 3917; //cid from `comment` table
    comment_delete($cid);

    //Delete multiple comments
    $cids = array(137421,137426,137427,137428,137429,137430,137431,137434,137450,137472);
    foreach ($cids as $cid) {
       comment_delete($cid);    
    }