Я создал помощник по страницам, который я использую повсюду.Есть небольшая математика, чтобы выяснить, сколько всего у вас страниц, но это должно сработать.
<?php
function paginate($pagecount, $currentpage, $baseurl, $params = array()) {
//var_dump($params);
$param_parts = array();
foreach ($params as $key => $param) {
$param_parts[] = $key . '=' . $param;
}
?>
<div class="text-center">
<?php
$left_ellipsis = false;
$right_ellipsis = false;
for ($i = 1; $i <= $pagecount; $i++) {
if ( ($i < 4) || ($i > $pagecount - 3) || ($i > $currentpage - 3 && $i < $currentpage + 3) ) {
if ($i == $currentpage) {
?>
<span class="btn btn-sm disabled"><?php echo $i; ?></span>
<?php
} else {
$urlout = array(
'currentpage=' . $i
);
$urlout = implode('&',$param_parts);
if ($urlout != '') {$urlout = '&' . $urlout;}
?>
<a class="btn btn-default btn-sm" href="<?php echo $baseurl; ?>?page=<?php echo $i; ?><?php echo $urlout; ?>"><?php echo $i; ?></a>
<?php
}
} else {
if ($currentpage > 6 && !$left_ellipsis) {
$left_ellipsis = true;
echo '<span class="ellip-block">...</span>';
}
if ($currentpage < $pagecount - 5 && $i > $currentpage && !$right_ellipsis) {
$right_ellipsis = true;
echo '<span class="ellip-block">...</span>';
}
}
//echo $pagecount;
}
?></div><?php
}
?>
Я назвал вспомогательный файл paginate_helper.php и, чтобы использовать его, просто добавьте его в любое представление.
Переменная $params
просто получает массив параметров, передаваемых через "get".
<?php paginate($page, $cur, $url, array('q' => $q)); ?>
Может быть полезным.Не стесняйтесь обновлять и распространять.