Skip to content

Instantly share code, notes, and snippets.

@kooler62
Last active August 29, 2015 14:24
Show Gist options
  • Select an option

  • Save kooler62/f4342c8dbdf1f9426129 to your computer and use it in GitHub Desktop.

Select an option

Save kooler62/f4342c8dbdf1f9426129 to your computer and use it in GitHub Desktop.
pagination k-62
<style>.current_page{color: red;}</style>
<?
function pagination($posts,$on_page='10',$mini_view=7,$delim=' ... ',$this_page='class="current_page"') {
# ПОСТРАНИЧНАЯ НАВИГАЦИЯ
/**
* $posts - всего элементов
* $on_page - элементов на одной странице
* $mini_view - сколько отображать страниц в навигации минимально 5, непарное число!
* $delim - разделитель
* $this_page - можно прописать css класс для выделения текущей страницы
* @author kooler62
* @link https://gist.github.com/kooler62/f4342c8dbdf1f9426129
* @version 11
*/
//защита гет параметра
$page = abs( $_GET['page'] );
$pages = intval( ($posts - 1) / $on_page) + 1;
//если минивид меньше 5 присвоем 5
if ( $mini_view < 5) { $mini_view = 5; }
if ( $on_page == 0) { $on_page = 10; }
if ( empty($page) || !isset($page) || $page == 0) {$page = 1;}
if ( $page >= $pages) {$page = $pages;}
if ( $posts <= $on_page ) {
# постов хватит только на 1 страницу, ничего не делаем
}
else{
//если постов меньше минивида
if ($pages<=$mini_view) {
for ($i=1; $i < $page; $i++) {
echo '<a href="?page=' . $i . '">' . $i . '</a> ';
}
echo '<a '.$this_page.' href="?page=' . $page . '">' . $page . '</a> ';
for ($i= ++$page; $i <= $pages; $i++) {
echo '<a href="?page=' . $i . '">' . $i . '</a> ';
}
}
//если мы в начале
elseif ($page == 1 || $page <= 2+( ($mini_view-3) / 2) ) {
if ($pages <= $mini_view) {
$cickl_end = $pages;
for ($i = 1; $i <= $cickl_end; $i++) {
echo '<a href="?page=' . $i . '">' . $i . '</a> ';
}
}
else{
$cickl_end = $mini_view-1;
}
//цикл от начала до текущей
for ($i = 1; $i < $page; $i++) {
echo '<a href="?page=' . $i . '">' . $i . '</a> ';
}
//избранная
echo '<a '.$this_page.' href="?page=' . $page . '">' . $page . '</a> ';
//цикл оттекущей до конца начала
for ($i = ++$page; $i <= $cickl_end; $i++) {
echo '<a href="?page=' . $i . '">' . $i . '</a> ';
}
echo $delim . '<a href="?page=' . $pages . '">' . $pages . '</a> ';
}
// если мы в конце
elseif ($page >= $pages || $page >= $pages-1-( ($mini_view-3) / 2) ) {
if ($pages <= $mini_view) {
for ($i = 1; $i <= $pages; $i++) {
echo '<a href="?page=' . $i . '">' . $i . '</a> ';
}
}
else{
echo '<a href="?page=1">1</a>' . $delim;
$start = $pages - ($mini_view - 2);
for ($i = $start; $i < $page; $i++) {
echo '<a href="?page=' . $i . '">' . $i . '</a> ';
}
echo '<a '.$this_page.' href="?page=' . $page . '">' . $page . '</a> ';
for ($i = ++$page; $i <= $pages; $i++) {
echo '<a href="?page=' . $i . '">' . $i . '</a> ';
}
}
}
// если мы в серидине
else{
echo '<a href="?page=1">1</a>' . $delim;
$z = ($mini_view - 3) / 2;
$middle_start = $page - $z;
$middle_end = $page + $z;
for ($i = $middle_start; $i < $page; $i++) {
echo '<a href="?page=' . $i . '">' . $i . '</a> ';
}
echo '<a ' . $this_page . ' href="?page=' . $page . '">' . $page . '</a> ';
for ($i = ++$page; $i < $middle_end+1; $i++) {
echo '<a href="?page=' . $i . '">' . $i . '</a> ';
}
echo $delim . '<a href="?page=' . $pages . '">' . $pages . '</a>';
}
}
}
echo pagination(100);
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment