获取Drupal节点中的所有注释ID

时间:2009-03-25 00:34:44

标签: drupal drupal-comments

我在Drupal中有一个节点,但有一些注释。是否有一种简单的方法来获取节点中每条评论的CID?另外,有没有办法按照各种参数,年表,评论的业力等对它们进行排序。谢谢。

3 个答案:

答案 0 :(得分:3)

我想你应该检查一下comment_render函数。

但是如果你需要自己的sort参数,那么使用sql命令会更容易;

检查:http://api.drupal.org/api/function/comment_render/6

您可以首先查询列出您需要订购的所有cid的查询;

$myquery = 'SELECT c.cid, c.pid, c.nid, c.subject, c.comment, c.format, c.timestamp, c.name, c.mail, c.homepage, u.uid, u.name AS registered_name, u.signature, u.picture, u.data, c.status FROM {comments} c INNER JOIN {users} u ON c.uid = u.uid WHERE c.nid
= %d ORDER BY c.uid ASC';

$myresult = db_query($myquery)

此查询存在于comment_render函数中。但我试着修改它供我使用。

现在我们按照我们想要的顺序拥有节点ID cid

这是渲染工作;

while ($mycomments = mysql_fetch_row($myresult)){

foreach ($mycomment as $mycid)

comment_render($nid, $mycid)

}

我没有测试过这个,但我希望它有所帮助。

答案 1 :(得分:1)

您可以使用以下函数加载drupal 7中节点的所有注释:

comment_get_thread($node, $mode, $comment_per_page)

点击此处的文档:http://api.drupal.org/api/drupal/modules%21comment%21comment.module/function/comment_get_thread/7

它还讨论了默认的排序参数。但是,这并不能让您轻松获得评论。我只会使用视图。然后你可以使用hook_node_view来禁用默认评论显示并添加views_embed_view('my_view','my_display');

答案 2 :(得分:0)

更简单的解决方案:

$sql = "SELECT cid FROM {comments} WHERE nid=%d ORDER BY timestamp DESC";

$resource = db_query($sql, $node->nid);
while( $row = db_fetch_array( $resource ) ) {
  print comment_render( $node->nid, $row['cid'] );
}

我们的初始SQL查询只需要获取注释ID(cid),因为comment_render的第二个参数将处理获取所有其他信息。