我有3个节点的内容类型'mycontenttype'。我试图设置一个可排序/可分页的表,每个页面限制为10个项目。D7寻呼机查询 - 寻呼机页面太多
在这段代码中,$ 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下一个>最后»
谢谢贝尔迪尔。我见过的例子在那里有数据查询,这就是抛弃它的原因。不确定的元素与它有什么关系,因为它可以正常工作,但我只是添加了这些东西,因为我以为我得到了一个错误的寻呼机。我感谢帮助! – Coder1 2011-04-22 16:06:10
如果默认的查询不起作用,您只需定义一个自定义查询。在Drupal 7中,它甚至可以处理GROUP BY条件。但是,在这种情况下,它只是执行SELECT COUNT(*)FROM($ the_normal_query)。这总是有效的,但如果它是例如聚合函数等,则它是不必要的慢。因此,对于这些情况,您可以定义自定义计数查询。如果你这样做,你将不得不确保它只返回一个结果 - 实际查询的总行数。 – Berdir 2011-04-22 18:54:11