pdoPage - продвинутый режим работы
В этом режиме работы страницы разбиваются следующим образом:
Я немного переделал схему работы, показывается первая, последняя, а рядом с текущей страницей будет отображаться чуть больше соседних, в остальном все остается по прежнему, количество ссылок на страницы будет всегда равным &pageLimit
1 2 ... 5 6 -7- 8 9 ... 14 15
Мне кажется это не совсем верно, зачем показывать несколько первых и последних страниц? При переходе на страницу пользователь сразу видит начальные страницы, а последняя показывается в основном для того, что бы сориентировать сколько всего страниц;Я немного переделал схему работы, показывается первая, последняя, а рядом с текущей страницей будет отображаться чуть больше соседних, в остальном все остается по прежнему, количество ссылок на страницы будет всегда равным &pageLimit
1 ... 4 5 6 -7- 8 9 10 ... 15
Возможно кому то еще пригодится, для этого нужно в pdopage.class.php поменять метод buildModernPagination на:public function buildModernPagination($page = 1, $pages = 5, $url = '') {
$pageLimit = $this->pdoTools->config['pageLimit'];
if ($pageLimit >= $pages || $pageLimit < 7) {
return $this->buildClassicPagination($page, $pages, $url);
}
else {
$step = (integer) floor( ($pageLimit-5) / 2);
$left = $page - $step;
$right = $page + $step;
$pageArr = array(1=>'',2=>'Skip',($pages-1)=>'Skip',$pages=>'');
if ($left<=3) {
$right = $right - $left + 3;
$left = 1;
}
elseif ( $right>=($pages-2) ) {
$left = $left + ($pages - $right) - 2;
$right = $pages;
}
}
$pagination = array();
for ($i=$left; $i <=$right ; $i++) {$pageArr[$i]='';}
foreach ($pageArr as $i => $value) {
if ($value=='Skip') {
$pagination[$i] = $this->pdoTools->getChunk($this->pdoTools->config['tplPageSkip']);
continue;
}
if ($page == $i && !empty($this->pdoTools->config['tplPageActive'])) {
$tpl = $this->pdoTools->config['tplPageActive'];
}
elseif (!empty($this->pdoTools->config['tplPage'])) {
$tpl = $this->pdoTools->config['tplPage'];
}
$pagination[$i] = !empty($tpl)
? $this->makePageLink($url, $i, $tpl)
: '';
}
ksort($pagination);
return implode($pagination);
}