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"> 1 </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.'"> '.$i.' </a> ';
// Текущая страничка
$out .= ' <span class="curr_page"> '.$page.' </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.'"> '.$i.' </a> ';
if ($page < $total_pages - $neighbors - 1)
$out .= ' ... ';
// Ссылка на последнюю страницу
if ($page < $total_pages)
$out .= ' <a class="page" href="'.$url.'p='.$total_pages.'"> '.$total_pages.' </a> ';
$out .= '</div>';
return $out;
}