很难想像Drupal这么强大的CMS系统发展这么长时间到现在的6.x版为止还是没有修复这个问题,7.x没有测试过。
解决方法有点点麻烦,可以新建一个module,modulename_block函数中$block['content']内容由如下代码获取:
$node_types = array(); $comments_per_page = array(); $comments_pages = array(); foreach (get_user_recent() as $comment) { $page = 0; if(isset($comments_pages[$comment->cid])) { $page = $comments_pages[$comment->cid]; } else { $nid = $comment->nid; if(!isset($node_types[$nid])) { $node_types[$nid] = db_result(db_query("SELECT type FROM {node} WHERE nid=%d", $nid)); } $node_type = $node_types[$nid]; if(!isset($node_type)) { $node_type = 'unknown'; } if(!isset($comments_per_page[$node_type])) { $comments_per_page[$node_type] = variable_get('comment_default_per_page_' . $node_type, 10); } $cpp = $comments_per_page[$node_type]; $sort_mode = variable_get('comment_default_mode_'. $node_type, COMMENT_MODE_THREADED_EXPANDED); $display_order = variable_get('comment_default_order_'. $node_type, COMMENT_ORDER_NEWEST_FIRST); $order = ''; if ($display_order == COMMENT_ORDER_NEWEST_FIRST) { if ($sort_mode == COMMENT_MODE_FLAT_COLLAPSED || $sort_mode == COMMENT_MODE_FLAT_EXPANDED) { $order .= ' ORDER BY cid DESC'; } else { $order .= ' ORDER BY thread DESC'; } } else if ($display_order == COMMENT_ORDER_OLDEST_FIRST) { if ($sort_mode == COMMENT_MODE_FLAT_COLLAPSED || $sort_mode == COMMENT_MODE_FLAT_EXPANDED) { $order .= ' ORDER BY cid'; } else { $order .= ' ORDER BY SUBSTRING(thread, 1, (LENGTH(thread) - 1))'; } } $sql = sprintf("SELECT cid FROM {comments} WHERE nid=%d AND cid< =%d$order", $comment->nid, $comment->cid); $result = db_query("SELECT cid FROM {comments} WHERE nid=%d AND cid< =%d$order", $comment->nid, $comment->cid); $count = 0; while($row = db_fetch_object($result)) { if($row->cid == $comment->cid) { break; } $count++; } $page = floor($count / $cpp); $comments_pages[$comment->cid] = $page; } $query = ($page > 0) ? 'page=' . $page : ''; $content .= "<div class=\"commentline\"><div class=\"newest\">". l(deletehtml($comment->comment), 'node/'. $comment->nid, array('fragment' => 'comment-'. $comment->cid, 'query' => $query, 'html' => TRUE)) .'<br />'. t('@time 之前', array('@time' => format_interval(time() - $comment->timestamp))) . "</div><div class=\"commenttime\">".t('@time 之前', array('@time' => format_interval(time() - $comment->timestamp)))."</div></div>"; } $block['content'] = $content; |
同样,也可以用下面现成的模版文件来实现同样的效果,用法很简单,把文件解压后,放到你的theme目录里即可。
点击下载comment-block模版文件