Новый вариант пагинации - с точками

This commit is contained in:
Krivchikov Dmitry 2015-11-23 00:41:09 +03:00
parent b23954c800
commit 2b88ddc44a
2 changed files with 35 additions and 4 deletions

View File

@ -2,7 +2,7 @@
class PageController extends Controller class PageController extends Controller
{ {
const elementsByPage = 50; const elementsByPage = 30;
static function actionPoints() static function actionPoints()
{ {
@ -46,9 +46,34 @@ class PageController extends Controller
$param = array(); $param = array();
$param['where'] = '`moderate` = 1'; $param['where'] = '`moderate` = 1';
$pointsCount = Point::model()->getCount($param); $pointsCount = Point::model()->getCount($param);
$pagesCount = ceil($pointsCount/self::elementsByPage); $pagesCount = intval(ceil($pointsCount/self::elementsByPage));
$page = isset($_GET['page']) ? abs((int)$_GET['page']) : $pagesCount; $page = isset($_GET['page']) ? abs((int)$_GET['page']) : $pagesCount;
$pages = array();
for ($index = $pagesCount; $index > $pagesCount-3; $index--) {
$pages[$index] = 1;
}
for ($index = 3; $index > 0; $index--) {
$pages[$index] = 1;
}
if ($page > $pagesCount) {
$page = $pagesCount;
} else if ($page < 1) {
$page = 1;
}
$topIndex = ($page+2 > $pagesCount) ? $pagesCount : $page+2;
$bottomIndex = ($page-3 < 1) ? 1 : $page-3;
for ($index = $topIndex; $index > $bottomIndex; $index--) {
$pages[$index] = 1;
}
krsort($pages);
$param = array(); $param = array();
$param['order'] = 'id DESC'; $param['order'] = 'id DESC';
if (App::getParam('category')) { if (App::getParam('category')) {
@ -88,6 +113,7 @@ class PageController extends Controller
'pointsCount' => $pointsCount, 'pointsCount' => $pointsCount,
'page' => $page, 'page' => $page,
'pagesCount' => $pagesCount, 'pagesCount' => $pagesCount,
'pages' => $pages,
'notModeratedPoints' => $notModeratedPoints, 'notModeratedPoints' => $notModeratedPoints,
'randomPoint' => Point::model()->getRandom(), 'randomPoint' => Point::model()->getRandom(),
)); ));

View File

@ -5,6 +5,7 @@ if (App::getParam('user')) {
App::redirect('/page/points/'); App::redirect('/page/points/');
} }
} }
$oldIndex = $pagesCount+1;
?> ?>
<div id="pageSmoothBackground" style="background-image: url(<?= $randomPoint->getImg('middle') ?>);"></div> <div id="pageSmoothBackground" style="background-image: url(<?= $randomPoint->getImg('middle') ?>);"></div>
@ -74,9 +75,13 @@ if (App::getParam('user')) {
<span aria-hidden="true">&laquo;</span> <span aria-hidden="true">&laquo;</span>
</a> </a>
</li> </li>
<?php for ($index = $pagesCount; $index > 0; $index--): ?> <?php foreach ($pages as $index => $val): ?>
<?php if ($oldIndex-$index != 1):?>
<li><a href="?page=<?= $index + ceil(($oldIndex-$index)/2) ?>" style="<?= $index==$page ? 'background-color: #eeeeed;' : '' ?>">...</a></li>
<?php endif; ?>
<li><a href="?page=<?= $index ?>" style="<?= $index==$page ? 'background-color: #eeeeed;' : '' ?>"><?= $index ?></a></li> <li><a href="?page=<?= $index ?>" style="<?= $index==$page ? 'background-color: #eeeeed;' : '' ?>"><?= $index ?></a></li>
<?php endfor; ?> <?php $oldIndex = $index; ?>
<?php endforeach; ?>
<li class="<?= ($page <= 1) ? 'disabled' : '' ?>"> <li class="<?= ($page <= 1) ? 'disabled' : '' ?>">
<a href="<?= ($page <= 1) ? '#' : '?page='.($page-1) ?>" aria-label="Next"> <a href="<?= ($page <= 1) ? '#' : '?page='.($page-1) ?>" aria-label="Next">
<span aria-hidden="true">&raquo;</span> <span aria-hidden="true">&raquo;</span>