Получить все идентификаторы комментариев в узле Drupal - PullRequest
3 голосов
/ 25 марта 2009

У меня есть узел в Drupal с несколькими комментариями. Есть ли самый простой способ получить CID каждого комментария в узле? Кроме того, есть ли способ сортировать их по различным параметрам, хронологии, карме комментариев и т. Д. Спасибо.

Ответы [ 3 ]

3 голосов
/ 25 марта 2009

Полагаю, вам следует проверить функцию comment_render.

Но если вам нужен собственный параметр сортировки, было бы проще сделать это с помощью команд 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. Но я попытался изменить его для моего использования.

Теперь у нас есть идентификатор узла и cid s в требуемом порядке.

Вот работа рендеринга;

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

foreach ($mycomment as $mycid)

comment_render($nid, $mycid)

}

Я не тестировал этот, но надеюсь, что это поможет.

1 голос
/ 08 августа 2012

Вы можете загрузить все комментарии для узла в 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');

0 голосов
/ 17 июня 2009

Более простое решение:

$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-запрос должен только извлечь идентификатор комментария (cid), так как второй параметр comment_render будет обрабатывать получение всей дополнительной информации.

...