Last active
August 29, 2015 14:24
-
-
Save kooler62/f4342c8dbdf1f9426129 to your computer and use it in GitHub Desktop.
pagination k-62
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <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