extra_pagination-8.x-1.0/includes/pager.inc

includes/pager.inc
<?php

/**
 * @file
 * Functions to aid in presenting database results as a set of pages.
 */

use Drupal\Core\Url;

/**
 * Return a new set of pager items between the last visible pager link and the
 * maximum pager number.
 *
 * @param int $pager_last
 *  The last visible pager number.
 * @param int $pager_max
 *  The maximum pager number.
 * @param array $route_parameters
 *  An associative array of the route parameters.
 * @param array $parameters
 *  An associative array of query string parameters to append to the pager
 *  links.
 * @param int $element
 *  An optional integer to distinguish between multiple pagers on one page.
 *
 * @return array
 *  A set of pager items between the last visible pager link and the
 *  maximum pager number.
 */
function pager_extra_pages($pager_last, $pager_max, $route_parameters, $parameters, $element) {
  $items = [];
  $base = 10;
  $count = 0;

  /** @var \Drupal\Core\Pager\PagerManager $pager_manager */
  $pager_manager = \Drupal::service('pager.manager');

  $i = floor($pager_last / $base) * $base;
  while (($i + $base) < $pager_max) {

    $i += $base;
    if (abs($i - $pager_last) > 1) {
      $options = [
        'query' => $pager_manager->getUpdatedParameters($parameters, $element, $i),
      ];
      $items[$i]['href'] = Url::fromRoute('<current>', $route_parameters, $options);
    }
    $count++;

    // This is done to make bigger intervals.
    if ($count === 10) {
      $base = $base * $base;
    }
  }

  return $items;
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc