我有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