web-dev-qa-db-ja.com

特定のノードからすべてのコメントをプログラムで印刷する方法は?

特定のノードに属するコメントを印刷する必要があります。したがって、基本的には、ノードIDを取得してから、特定のノードからすべてのコメントを選択して出力します。次のコードを使用して、1つのコメント(たとえば、id = 12)を印刷できることを知っています。

<?php
$comment = _comment_load(12);
return theme('comment',$comment);
?>

誰でもこれを行う方法を教えてもらえますか?

4
Vonder

すぐに使える関数を探しているなら、 comment_render() を見てください。

使用例(コメントが必要なノードにnid = 5があるとします):

<?php
  $node = node_load(5);
 print comment_render($node);
?>

または、データベース(コメントテーブル)を手動でクエリして、一致するnidを持つすべてのコメントを取得することもできます。

<?php
  $nid = 5;
  db_query('SELECT * FROM {comments} WHERE nid = %d', $nid);
?>
6
Laxman13

完全なコメントオブジェクトをロードする場合は、次のように使用できます。

$result = db_select('comment')
  ->fields('comment', array('cid'))
  ->condition('nid', $node->nid, '=')
  ->execute();

$cids = $result->fetchCol();
$comments=comment_load_multiple($cids);

foreach($comments as $comment) {
  //do some stuff with the comment
  print $comment->comment_body ["und"][0] ["value"];
}
3

Drupal 7以降comment_renderは削除されました。代わりに、このようなコメントを読み込むことができます。

$result = db_select('comment')
                  ->fields('comment', array('name','subject'))
                  ->condition('nid', $node->nid, '=')
                  ->execute()
                  ->fetchAssoc();
foreach($result as $comment) {
   print $comment;
 }
1
rashidkhan