如何在drupal中打印单个注释?

时间:2009-03-21 00:26:55

标签: php drupal drupal-comments

我想根据它的评论ID在drupal中打印个人评论。我怎样才能做到这一点?谷歌和其他消息来源并没有让我感到满意。谢谢。

3 个答案:

答案 0 :(得分:3)

function print_comment($cid) {
  $sql = "SELECT * FROM {comments} WHERE cid = %d";
  if ($comment = db_fetch_object(db_query($sql, $cid))) {
    $node = node_load($comment->nid);
    return theme('comment', $comment, $node);
  }
}

答案 1 :(得分:3)

伊顿的建议很好(除了它是{comments},而不是{comment}),如果你需要像核心一样显示评论,包括来自节点的信息。除modules/comment/comment.tpl.php中的默认theme_comment实现外,不使用$ node。

但是,我的做法略有不同,因为如果您需要提取单个评论,则使用comment.tpl.php提供的正常内容格式显示该评论可能不合适。

function print_comment($cid) {
  $sql = "SELECT * FROM {comment} c WHERE c.cid = %d";
  if ($comment = db_fetch_object(db_rewrite_sql(db_query($sql, $cid), 'c'))) {
    return theme('my_special_comment_formatting', $comment);
  }
}

当然,在模块的hook_theme()实现中定义这种特殊的通知格式,受comment.tpl.php的启发。

2014-02更新:请注意,这是2009年的问题/答案。在Drupal 8中,你只是不想访问假设的底层SQL数据库(并且不会这样做,但是使用DBTNG),但只是使用类似的东西:

if ($comment = entity_load('comment', $cid)) {
  return entity_view($comment, $view_mode);
}

答案 2 :(得分:2)

没有理由使用任何sql来执行此操作,只需要两个drupal api函数调用。

function print_comment($cid) 
{
    $comment = _comment_load($cid);
    return theme('comment',$comment);
}