Аргументы:
-
$format
- строка-урл, должен быть %s для подстановки страниц -
$found
- количество найденных результатов -
$page_id
- номер страницы из GET-запроса -
$limit
- лимит, обычно 50
function get_pagination($format, $found, $page_id, $limit = 50) { $html = '<div class="paging">'; $pagetpl = function($n, $alt = '') use ($page_id, $format) { $alt = $alt ?: $n+1; if ($n == $page_id) { return '<span class="page-active">'.$alt.'</span>'; } else { return ' <a href="'.sprintf($format, $n).'" class="page">'.$alt.'</a> '; } }; $max = (int)($found / $limit) + (($found % $limit) ? 0 : 1); if ($found == 0) $max = 0; $a = $page_id - 5; $a = max($a, 0); $b = $page_id + 5; if ($b >= $max) $b = $max; if ($page_id > 0) $html .= $pagetpl($page_id + 1, '←'); if ($a > 0) $html .= $pagetpl(0); if ($a > 2) $html .= $pagetpl($a-1, '…'); for ($n = $a; $n <= $b; $n++) $html .= $pagetpl($n); if ($b < $max - 1) $html .= $pagetpl($b+1, '…'); if ($b < $max) $html .= $pagetpl($max); if ($page_id < $max) $html .= $pagetpl($page_id + 1, '→'); return "$html</div>"; }