тема ("пейджер") возвращает значение 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 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
.
Вероятно, ваш $countquery
работает неправильно.
Вы можете попробовать использовать следующий код.
pager_query($query, 15, 0, $countQuery);