2

我想根据评论 ID 在 drupal 中打印单个评论。我怎样才能做到这一点?谷歌和其他来源没有给我任何帮助。谢谢你。

4

3 回答 3

3
功能打印评论($cid){
  $sql = "SELECT * FROM {comments} WHERE cid = %d";
  if ($comment = db_fetch_object(db_query($sql, $cid))) {
    $node = node_load($comment->nid);
    返回主题('comment',$comment,$node);
  }
}
于 2009-03-21T00:57:27.803 回答
3

如果您需要像 core 那样显示评论,包括来自节点的信息,伊顿的建议很好(除了它{comments},不是)。{comment}除了默认的 theme_comment 实现modules/comment/comment.tpl.php不使用 $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 年 2 月更新:请注意,这是 2009 年的问题/答案。在 Drupal 8 中,您只是不想访问假设的底层 SQL 数据库(无论如何也不会这样做,而是使用 DBTNG),而只需使用类似的东西:

if ($comment = entity_load('comment', $cid)) {
  return entity_view($comment, $view_mode);
}
于 2009-03-21T13:32:32.683 回答
2

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

function print_comment($cid) 
{
    $comment = _comment_load($cid);
    return theme('comment',$comment);
}
于 2010-01-28T22:26:43.380 回答