function pagination url page total_pages neighbors out div class pagin

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
function pagination($url, $page, $total_pages) {
$neighbors = 2;
$out = '<div class="pagination">';
if ($page > 1 || $page < $total_pages) {
$out .= '<div class="plinks">';
if ($page > 1)
$out .= ' ← <a href="'.$url.'p='.($page - 1).'">Предыдущая</a>';
if ($page > 1 && $page < $total_pages)
$out .= ' | ';
if ($page < $total_pages)
$out .= ' <a href="'.$url.'p='.($page + 1).'">Следующая</a> →';
$out .= '</div>';
}
// Ссылка на первую страницу
if ($page > 1)
$out .= ' <a class="page" href="'.$url.'p=1">&nbsp;1&nbsp;</a>';
// Страницы слева активной
if ($page - 1 > $neighbors + 1)
$out .= ' ... ';
$min_page = max(2, $page - $neighbors);
for ($i = $min_page; $i < $page; $i++)
$out .= ' <a class="page" href="'.$url.'p='.$i.'">&nbsp;'.$i.'&nbsp;</a> ';
// Текущая страничка
$out .= ' <span class="curr_page">&nbsp;'.$page.'&nbsp;</span> ';
// Страницы справа активной
$max_page = min($total_pages - 1, $page + $neighbors);
for ($i = $page + 1; $i <= $max_page; $i++)
$out .= ' <a class="page" href="'.$url.'p='.$i.'">&nbsp;'.$i.'&nbsp;</a> ';
if ($page < $total_pages - $neighbors - 1)
$out .= ' ... ';
// Ссылка на последнюю страницу
if ($page < $total_pages)
$out .= ' <a class="page" href="'.$url.'p='.$total_pages.'">&nbsp;'.$total_pages.'&nbsp;</a> ';
$out .= '</div>';
return $out;
}