Загрузить переменные комментариев в блоке - PullRequest
0 голосов
/ 23 июля 2010

В блоке drupal вы можете получить доступ к переменным узла, используя node_load (arg (1)).Но как получить переменные комментария в блоке?

1 Ответ

0 голосов
/ 23 июля 2010

Если вам нужно получить список всех комментариев, сделанных для узла, вы можете использовать следующий код:

$query = 'SELECT c.nid, c.subject, c.cid, c.timestamp FROM {comments} c INNER JOIN {node} n ON n.nid = c.nid WHERE c.nid = %d AND n.status = 1 AND c.status = %d ORDER BY c.cid DESC';

$result = db_query(arg(1), COMMENT_PUBLISHED);
while ($comment = db_fetch_object($result)) {
  $comments[] = $comment;
}

Вместо того, чтобы просто использовать arg(1), который не учитывает ревизию узла в URL-адресах, таких как /node/<nid>/revision/<rid>, вы должны использовать menu_get_object(); в этом случае код станет:

$node = menu_get_object();
if (!empty($node) && !empty($node->nid)) {
  $query = 'SELECT c.nid, c.subject, c.cid, c.timestamp FROM {comments} c INNER JOIN {node} n ON n.nid = c.nid WHERE c.nid = %d AND n.status = 1 AND c.status = %d ORDER BY c.cid DESC';
  $result = db_query($query, $node->nid, COMMENT_PUBLISHED);
  while ($comment = db_fetch_object($result)) {
    $comments[] = $comment;
  }
}
...