D7 Pager Query - Слишком много страниц в пейджере - PullRequest
1 голос
/ 22 апреля 2011

У меня есть 3 узла типа контента 'mycontenttype'. Я пытаюсь настроить сортируемую таблицу с ограничением в 10 элементов на странице.

В этом коде $ nids возвращает только 3 узла. На самом деле я запускаю node_load_multiple ($ nids), затем перебираю эти узлы, чтобы построить переменную $ row. Только 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 следующая ›последняя»

1 Ответ

2 голосов
/ 22 апреля 2011

Я думаю, что element должен быть целым числом.

Попробуйте оставить как вызов -> element (), так и любые аргументы для темы ('pager').

Также ваш счетзапрос неверный.Только не определяйте это, это будет сделано автоматически для вас.Вероятно, это реальная причина вашей проблемы, а не элемент.

Выполнен запрос count, и первым возвращаемым значением (fetchField ()) считается число элементов.Ваш запрос, вероятно, возвращает NID, и это ошибочно, как число.Так что просто оставьте это, и Drupal автоматически создаст для вас правильный счетчик запросов.

...