Вы не зашли.
Пытаюсь сделать типа если недостает ранжировка до (2 * $range + 1) то перебросить значения с начала в конец. И наоборот.
Пока чет не соображу.
Код:
span style="color: #0000BB"><?php$range = 3;/*[1] 2 3 4 5 6 73 4 5 [6] 7 8 93 4 5 6 7 8 [9]*/?> |
Отредактировано tipsun (2011.12.16 18:06)
Кажется получилось!!!
Смотрел при 10-100 записях (10 записей = 1стр.) нормально.
Код:
span style="color: #0000BB"><?php public function getPageRange($range=null) { $range = (is_numeric($range) and 0 < $range) ? (int)$range : 4; $prev = $this->getPage() - $range; $next = $this->_page + $range; $start = $this->getPages() < $next ? $this->_pages - $next + $prev : $prev; $stop = 1 > $prev ? $next - $prev + 1 : $next; $start = 1 < $start ? $start : 1; $stop = $this->_pages > $stop ? $stop : $this->_pages; return range($start, $stop); }?> |
Отредактировано tipsun (2011.12.17 12:12)
без каментов ничего не понимаю =ь
а так с ходу видно, что 4 нужно в настройки вынести.
Ну это предназначалось для перекидывания значений между начальной и конечной точкой.
Т.е. вместо:
- 1) [1] 2 3 4
будет:
[1] 2 3 4 5 6 7
т.е. минусовая ранжировка превратилась в плюсовую.
Для чего это?Для
плавной прокрутки.
Вместо:
- 2) 1 [2] 3 4 5
будет:
1 [2] 3 4 5 6 7
И чо?Ну если посмотреть в пункт (1) там 4 элемента. А в (2) уже 5.
В принципе это все не так уж необходимо.
- - - -
Еще думаю добавить начальную и конечную страницу,
но при этом нарушается
плавность.
Отредактировано tipsun (2011.12.18 22:10)
Получилось!
Строго 7 элементов/квадратиков с номерами страниц, при использовании -2/+2 ранжировки.
Код:
span style="color: #0000BB"><?php /** * pageMan::getPageRange() * Получение ближайшего отрезка номеров страниц для создания навигации вида: (1 10 11 [12] 13 14 n). * @return array */ public function getPageRange($range=null) { if (1 == $this->getPages()) return array(1); $range = (is_numeric($range) and 0 < $range) ? (int)$range : 4; //про 4 не забыл. =) В константу её. $prev = $this->getPage() - $range; $next = $this->_page + $range; $start = $this->getPages() < $next ? $this->_pages - $next + $prev : $prev; $stop = 1 > $prev ? $next - $prev + 1 : $next; $start -= $this->_pages <= $stop ? 1 : 0; $stop += 1 >= $start ? 1 : 0; $start = 1 < $start ? $start : 1; $stop = $this->_pages > $stop ? $stop : $this->_pages; $array = range($start, $stop); if (1 < $start) { array_unshift($array, 1); } if ($this->_pages > $stop) { $array[] = $this->_pages; } return $array; }?> |
Отредактировано tipsun (2012.01.05 13:01)
В
ZF надо посмотреть есть ли такой же метод ранжировки. Скорее всего конечно же есть. И наверно проще сделано.
Отредактировано tipsun (2011.12.20 11:11)
phpDoc не совсем верные
@return object замени на @return pageMan
@param mixed $count на @param integer $count
и тд. так же убери pageMan::getTable() и проч, как будто ты описываешь статические методы.
а так, не вдаваясь в подробности выглядит норм.