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 に答える