тема ("пейджер") возвращает значение NULL


Я пытаюсь использовать theme_pager для создания разбивки на страницы, как показано ниже, но разбивка на страницы не отображается. Я пробовал использовать var_dump(theme('pager', NULL, 10)), и в результате NULL.

$q="SELECT DISTINCT(node.nid) AS nid, node.type AS node_type, node.vid AS node_vid, node.title AS node_title, node.language AS node_language, node.created AS node_created, node_revisions.teaser AS node_revisions_teaser, node_revisions.format AS node_revisions_format FROM node node  LEFT JOIN node_revisions node_revisions ON node.vid = node_revisions.vid WHERE (node.type in ('slideshow')) AND (node.status <> 0) AND (node.language='$lang') GROUP BY nid ORDER BY node_created DESC";
$result = pager_query($q, 10, 0);
//Process data.
return $output . theme('pager', NULL, 10);

Также я попытался упростить запрос и сделать его из одной таблицы, как показано ниже, но это не сработало так же хорошо

SELECT nid, title, language, created FROM node WHERE node.type='slideshow' AND node.status  0 AND node.language='en' ORDER BY created DESC

Любая идея высоко ценится!

 2
Author: kiamlaluno, 2011-04-20

2 answers

Проблема заключается в том, что запрос, вероятно, слишком сложен, и pager_query() не может изменить его, чтобы получить общее количество строк, соответствующих запросу, переданному в качестве аргумента.
Как сообщается в документации для pager_query():

Пейджер использует запросы на основе ОГРАНИЧЕНИЙ для извлечения только записей, необходимых для отображения определенной страницы. Однако он должен узнать общее количество записей, возвращенных запросом, чтобы вычислить количество страниц (количество записей / записей на страницу). Это делается путем вставки COUNT(*) в исходный запрос. Например, запрос SELECT nid, type FROM node WHERE status = '1' ORDER BY sticky DESC, created DESC будет переписан на чтение SELECT COUNT(*) FROM node WHERE status = '1' ORDER BY sticky DESC, created DESC. Переписывание запроса выполняется с использованием регулярного выражения.

К сожалению, правило перезаписи не всегда работает должным образом для запросов, в которых уже есть предложение COUNT(*) или GROUP BY, и, возможно, для других сложных запросов. В этих случаях вы можете дополнительно передать запрос, который будет использоваться для подсчета записей .

Например, если вы хотите разместить запрос на странице SELECT COUNT(*), TYPE FROM node GROUP BY TYPE, pager_query() вызовет неверный запрос SELECT COUNT(*) FROM node GROUP BY TYPE. Поэтому вместо этого вы должны передать SELECT COUNT(DISTINCT(TYPE)) FROM node в качестве необязательного параметра $count_query.

 1
Author: kiamlaluno, 2011-04-20 12:06:10

Вероятно, ваш $countquery работает неправильно.

Вы можете попробовать использовать следующий код.

pager_query($query, 15, 0, $countQuery);
 0
Author: mohit_rocks, 2012-09-14 20:26:45