alan
alan

Reputation: 411

How do I print a single comment in drupal?

I want to print a individual comment in drupal based on it's comment ID. How can I do this? Google and other sources have yielded me nothing. Thank you.

Upvotes: 2

Views: 998

Answers (3)

FGM
FGM

Reputation: 2860

Eaton's suggestion is good (except it's {comments}, not {comment}) if you need to display the comment like core does it, including the info coming from the node. Except the default theme_comment implementation in modules/comment/comment.tpl.php makes no use of $node.

However, I'd do it slightly differently, because if you need to extract a single comment, displaying it with the normal content formatting provided by comment.tpl.php is likely to be inappropriate.

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);
  }
}

And of course, define this special commment formatting in your module's hook_theme() implementation, inspired by what comment.tpl.php does.

2014-02 UPDATE: note that this is a 2009 question/answer. In Drupal 8, you just don't want to access the hypothetical underlying SQL database (and would not do it like this anyway, but use DBTNG), but just use something like:

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

Upvotes: 3

TrippRitter
TrippRitter

Reputation: 301

No reason to use any sql to do this, two drupal api function calls is all it takes.

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

Upvotes: 2

Eaton
Eaton

Reputation: 7415

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);
  }
}

Upvotes: 3

Related Questions