我正在尝试生成一个包含特定节点列表的页面,但 node_view 返回一个空字符串。
这是我的查询:
function events_upcoming() {
$output = '';
$has_events = false;
$res = pager_query(db_rewrite_sql("SELECT n.nid, n.created FROM {node} n WHERE n.type = 'events' AND n.status = 1 ORDER BY n.sticky DESC, n.created DESC"), variable_get('default_nodes_main', 10));
while ($n = db_fetch_object($res)) {
$output .= node_view(node_load($n->nid), 1);
$has_events = true;
}
if ($has_events) {
$output .= theme('pager', NULL, variable_get('default_nodes_main', 10));
}
return $output;
}
hook_menu(部分):
'events/upcoming' => array(
'title' => t('Upcoming Events'),
'page callback' => 'events_upcoming',
'access arguments' => array('access content'),
'type' => MENU_SUGGESTED_ITEM
),
hook_view的实现:
function events_view($node, $teaser = false, $page = false) {
$node = node_prepare($node, $teaser);
if ($page) {
// TODO: Handle breadcrump
}
return $node;
}
现在,如果我在 events_view 中添加一个 var_dump($node) ,则该节点存在并且我可以看到我想要的值,如果我在 events_upcoming 的 while 循环中添加一个 var_dump ,我也会从查询中获得一个节点 ID。
奇怪的是,当我加载 localhost/events/upcoming 时,我看到的是寻呼机,没有别的。
我使用了 blog.module 作为参考,但是我在这里缺少什么?