Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ```php
- // пагинация для страницы
- protected function pagination($setting)
- {
- //$setting = array('count_page'=>100, 'this_page'=>1, 'item_link'=>7);
- $page_this = $setting['this_page']; // текущая страница
- $page_count = $setting['count_page']; // максимальное кол-во страниц
- $item_count = $setting['item_link']; // кол-во элементов на страницу, нечетное
- $item_step = ceil(($item_count-1)/2); // (шаг) кол-во элементов справа и слева от текущего
- $page_result = array(); // массив для возврата результата
- // если страниц не одна
- if ($page_count != 1){
- // текущая в первом шаге
- if ($page_this < $item_step+1) {
- // начиная с первого до количества элементов
- $page_near = range(1,$item_count);
- }
- // текущая в последнем шаге
- elseif ($page_this > $page_count-$item_step) {
- // с последней минус количество элементов, до конца
- $page_near = range($page_count-$item_count+1, $page_count);
- }
- // текущая в серединных элементах
- else {
- // элементы равномерно от текущей справа и слева на величину шага
- $page_near = range($page_this-$item_step, $page_this+$item_step);
- }
- // заменяем первый и последний элементы на первую и последнюю страницы
- $page_near[0] = 1;
- $page_near[$item_count-1] = $page_count;
- }
- // если страниц меньше чем элементов, то выводим все страницы
- if ($page_count <= $item_count){
- $page_near = range(1, $page_count);
- }
- // если страниц всего одна, то возвращаем пустоту
- if ($page_count == 1) {
- return $page_result = array();
- }
- // проходимся по всем элементам, чтобы сформировать результат и пометить элементы в выводе
- foreach($page_near as $page) {
- $page_result[] = array('page'=>$page, 'this_page'=> ($page_this == $page) ? 1 : 0);
- }
- return $page_result;
- }
- ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement