[решено] Пагинация после обновления с 6 на 7

Главные вкладки

Аватар пользователя mNigma@drupal.org mNigma@drupal.org 6 марта 2015 в 12:25

Добрый день!
Обновил сайт с 6 на 7.34. По большей степени все прошло гладко кроме пагинации.
Есть одна единственная запись в блоге, а пейджер показывает 18 пунктов перехода (т. е. последняя страница 18).
Та же петрушка и на страницах таксономии - в некоторых разделах материала на страниц 5, а показывает все те же 18.
Такое ощущение, что это где-то твердо прописано, но в теме пусто. Все модули и движок чистые.

Кто сталкивался, подскажите как решить или в какую сторону копать?

P.S. если выводить через виевс (например включить базовое представление вывода таксономии), все работает правильно.

Комментарии

Аватар пользователя mNigma@drupal.org mNigma@drupal.org 6 марта 2015 в 13:28

А где это можно подправить?
Смотрю отчет запросов Devel, все правильно
PagerDefault::execute SELECT COUNT(*) AS expression FROM (SELECT 1 AS expression FROM node n WHERE (type = 'blog') AND (status = '1') ) subquery
PagerDefault::execute SELECT n.nid AS nid, n.sticky AS sticky, n.created AS created FROM node n WHERE (type = 'blog') AND (status = '1') ORDER BY sticky DESC, created DESC LIMIT 5 OFFSET 0

Аватар пользователя mNigma@drupal.org mNigma@drupal.org 6 марта 2015 в 13:52

В функции pager_default_initialize (pager.inc) $pager_total = 1;
В функцию темизации theme_pager приходит $pager_total =18;
Где-то по пути меняется эта глобальная переменная $pager_total.

Аватар пользователя mNigma@drupal.org mNigma@drupal.org 6 марта 2015 в 16:18

Если в views_plugin_pager_full.inc (modules/views/plugins) закомментировать
global $pager_page_array, $pager_total, $pager_total_items, $pager_limits; - строка 350
Работает правильно, но не отображается пейджер на страницах которые выводятся через views.
Выходит как-то конфликтует.

Аватар пользователя sas@drupal.org sas@drupal.org 6 марта 2015 в 17:43

Попробуйте использовать для запроса count_query, например как здесь

function comment_get_thread($node, $mode, $comments_per_page) {
  $query = db_select('comment', 'c')->extend('PagerDefault');
  $query->addField('c', 'cid');
  $query
    ->condition('c.nid', $node->nid)
    ->addTag('node_access')
    ->addTag('comment_filter')
    ->addMetaData('node', $node)
    ->limit($comments_per_page);

  $count_query = db_select('comment', 'c');
  $count_query->addExpression('COUNT(*)');
  $count_query
    ->condition('c.nid', $node->nid)
    ->addTag('node_access')
    ->addTag('comment_filter')
    ->addMetaData('node', $node);

  if (!user_access('administer comments')) {
    $query->condition('c.status', COMMENT_PUBLISHED);
    $count_query->condition('c.status', COMMENT_PUBLISHED);
  }
  if ($mode === COMMENT_MODE_FLAT) {
    $query->orderBy('c.cid', 'ASC');
  }
  else {
    // See comment above. Analysis reveals that this doesn't cost too
    // much. It scales much much better than having the whole comment
    // structure.
    $query->addExpression('SUBSTRING(c.thread, 1, (LENGTH(c.thread) - 1))', 'torder');
    $query->orderBy('torder', 'ASC');
  }

  $query->setCountQuery($count_query);
  $cids = $query->execute()->fetchCol();

  return $cids;
}

Аватар пользователя mNigma@drupal.org mNigma@drupal.org 6 марта 2015 в 18:08

Пока не знаю где это поправить.
Пейджер с 18 страницами показывается везде на всех страницах + страницы администрирования, кроме вывода views.

Аватар пользователя mNigma@drupal.org mNigma@drupal.org 6 марта 2015 в 18:33

Алексей, спасибо за помощь. Решилось, хотя почему так работало, не могу понять.
Есть два региона, которые выводятся только на главной в шаблоне page--front. В настройках условий отображения блоков, которые выводятся в этом регионе, ничего не стояло. Предполагалось, что кроме главной они нигде и не выводятся. Поставил условие отображать только на главной, все наладилось.