<?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;
}
// если страниц меньше чем элементов, то выводим все страницы
elseif ($page_count <= $item_count) {
$page_near = range(1, $page_count);
}
// если страниц всего одна, то возвращаем пустоту
elseif ($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;
}
Last active
November 17, 2015 09:09
-
-
Save DKepov/b1ba6785a4f4092efc0e to your computer and use it in GitHub Desktop.
creating an array for custom pagination
Author
DKepov
commented
Aug 31, 2015
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment