我有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标题| col2 val | col3 val
节点2标题| col2 val | col3 val
节点3标题| col2 val | col3 val
1 2 3 4 next> last»
答案 0 :(得分:2)
我认为元素应该是一个整数。
尝试将 - &gt; element()调用和主题('pager')的任何参数都留下。
此外,您的计数查询错误。只是不要定义它,这将自动为您完成。这可能是你问题的真正原因,而不是元素。
计数查询得到执行,第一个返回值(fetchField())被假定为元素数。您的查询可能返回一个nid,这被误认为是数字。所以请将其留下,Drupal将自动为您构建正确的计数查询。