0

我正在尝试生成一个包含特定节点列表的页面,但 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 作为参考,但是我在这里缺少什么?

4

1 回答 1

0

这里是线程,里面有一个补丁,还有我的另一个答案。

http://drupal.org/node/229411

您可以在要执行 node_view 的每个位置使用 node_load,但这似乎浪费了您的处理器。

检查补丁,虽然它在核心节点模块上。

于 2010-04-19T18:02:52.597 回答