2010-07-22 69 views
0

在drupal块中,可以使用node_load(arg(1))访问节点变量。但是如何在块中获得注释变量?加载块中的注释变量

+0

您对哪些评论感兴趣? – kiamlaluno 2010-07-23 04:50:38

+0

Drupal已经有一个块列出了最新的评论。为什么你需要另一个显示评论数据的区块? – kiamlaluno 2010-07-23 04:54:04

回答

0

如果你需要得到的一个节点上的所有评论列表,你可以使用下面的代码:

$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; 
    } 
} 
+0

如果您只对'$ number'注释感兴趣,可以使用'db_query_range($ query,$ node-> nid,COMMENT_PUBLISHED,0,$ number)''。 – kiamlaluno 2010-07-23 05:08:01

+0

我已经在评论区域中放置了一个区域,并为其指定了一个块,并且我想访问$ comment-> cid。 – Toxid 2010-07-23 16:44:29