Вы не зашли.
Главная » PHP » Функция навигации по страницам
#71. tipsun Off (19)
Moderator
2011.12.16 11:11
Исправил.
#72. tipsun Off (19)
Moderator
2011.12.16 18:06
Пытаюсь сделать типа если недостает ранжировка до (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)
#73. tipsun Off (19)
Moderator
2011.12.17 10:10
Кажется получилось!!!

Смотрел при 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)
#74. Gemorroj Off (107)
Administrator
2011.12.18 22:10
без каментов ничего не понимаю =ь
а так с ходу видно, что 4 нужно в настройки вынести.
#75. tipsun Off (19)
Moderator
2011.12.18 22:10
Ну это предназначалось для перекидывания значений между начальной и конечной точкой.
Т.е. вместо:
- 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.
В принципе это все не так уж необходимо. big_smile
- - - -
Еще думаю добавить начальную и конечную страницу,
но при этом нарушается плавность.
Отредактировано tipsun (2011.12.18 22:10)
#76. tipsun Off (19)
Moderator
2011.12.19 16:04
Получилось! http://wapinet.ru/forum/download.php?aid=949

Строго 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; }?>
Вложения
FuckYeah.gif 18kb {64x64} [загрузок: 1051]
Отредактировано tipsun (2012.01.05 13:01)
#77. tipsun Off (19)
Moderator
2011.12.20 09:09
В ZF надо посмотреть есть ли такой же метод ранжировки. Скорее всего конечно же есть. И наверно проще сделано. sad
Отредактировано tipsun (2011.12.20 11:11)
#78. tipsun Off (19)
Moderator
2011.12.20 22:10
Вот, для наглядности.
Вложения
pageMan_test.zip 2kb [загрузок: 530]
#79. Gemorroj Off (107)
Administrator
2011.12.20 22:10
phpDoc не совсем верные
@return object замени на @return pageMan
@param mixed $count на @param integer $count
и тд. так же убери pageMan::getTable() и проч, как будто ты описываешь статические методы.
а так, не вдаваясь в подробности выглядит норм.
#80. tipsun Off (19)
Moderator
2011.12.20 22:10
Ок, спс.
Страниц: 16 7 8 9 1016 Все
Главная
WEB
PunBB Mod v0.6.2
0.017 s