D7 寻呼机查询 - 寻呼机中的页面太多

发布于 2024-11-02 16:38:54 字数 1267 浏览 1 评论 0原文

我有 3 个内容类型为“mycontenttype”的节点。我正在尝试设置一个可排序/可分页的表,每页限制 10 个项目。

在此代码中,$nids 仅返回 3 个节点。我实际上正在运行 node_load_multiple($nids) 然后循环这些节点来构建 $rows 变量。只出现3个。

问题:寻呼机正在呈现 4 个页面。

期望:应该没有分页器渲染,因为我在查询或计数查询中没有 10 个节点。

任何见解将不胜感激。

<?php
function mymodule_create_a_pager_table() {

  $query = db_select('node', 'n')->extend('PagerDefault')->extend('TableSort')->element('my_custom_id');
  $query->fields('n', array('nid'));

  $query->condition('n.type', 'mycontenttype');
  $query->condition('n.status', 1);

  $count_query = clone $query;
  $query->setCountQuery($count_query);

  $query->limit(10);

  $header = array(array('data' => 'Title', 'sort' => 'asc', 'field' => 'n.title'), 'column 2', 'column 3');
  $query->orderByHeader($header);

  $nids = $query->execute()->fetchCol();

  // ... building $rows array for display only here

  $output = theme('table', array('header'=> $header, 'rows' => $rows));
  $output .= theme('pager', array('element' => 'my_custom_id', 'quantity' => 10));

  return $output;
}
?>

输出

节点 1 标题 |列 2 值 | col3 val

节点 2 标题 |列 2 值 | col3 val

节点 3 标题 |列 2 值 | col3 val

1 2 3 4 下一个 › 最后一个 »

I have 3 nodes of content type 'mycontenttype'. I'm trying to setup a sortable/pagable table with a limit of 10 items per page.

In this code, $nids only returns 3 nodes. I'm actually runnng node_load_multiple($nids) then looping through those nodes to build the $rows variable. Only 3 appear.

Problem: The pager is rendering with 4 pages.

Expectation: There should be no pager rendering because I do not have 10 nodes in the query or the count query.

Any insight would be greatly appreciated.

<?php
function mymodule_create_a_pager_table() {

  $query = db_select('node', 'n')->extend('PagerDefault')->extend('TableSort')->element('my_custom_id');
  $query->fields('n', array('nid'));

  $query->condition('n.type', 'mycontenttype');
  $query->condition('n.status', 1);

  $count_query = clone $query;
  $query->setCountQuery($count_query);

  $query->limit(10);

  $header = array(array('data' => 'Title', 'sort' => 'asc', 'field' => 'n.title'), 'column 2', 'column 3');
  $query->orderByHeader($header);

  $nids = $query->execute()->fetchCol();

  // ... building $rows array for display only here

  $output = theme('table', array('header'=> $header, 'rows' => $rows));
  $output .= theme('pager', array('element' => 'my_custom_id', 'quantity' => 10));

  return $output;
}
?>

Output

Node 1 Title | col2 val | col3 val

Node 2 Title | col2 val | col3 val

Node 3 Title | col2 val | col3 val

1 2 3 4 next › last »

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜还是长夜 2024-11-09 16:38:54

我认为元素应该是一个整数。

尝试保留 ->element() 调用和 theme('pager') 的任何参数。

另外,您的计数查询是错误的。只是也不要定义它,这将自动为您完成。这可能是您问题的实际原因,而不是元素问题。

执行计数查询 get 并假定第一个返回值 (fetchField()) 是元素的数量。您的查询可能返回一个 nid,并且该值被误认为是数字。因此,只需将其保留,Drupal 就会自动为您构建正确的计数查询。

I think element should be an integer.

Try to leave both the ->element() call and any arguments to theme('pager') away.

Also, your count query is wrong. Just don't define it either, that will be done automatically for you. This is probably the actual reason for your problem, not the element thing.

The count query get's executed and the first returned value (fetchField()) is assumed to be the number of elements. Your query probably returns a nid and that is mistaken as the number. So just leave that away, and Drupal will build a correct count query automatically for you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文