Перейти к содержимому


Конкурс "Лучший отзовик"
× Быстрый вопрос
Пользователь месяца
Vmir Vmir 1-й за Апрель
Очков активности: 1 512 8 тем, 60 сообщений, 12 баллов репутации
ТОП самых активных за этот месяц
  • Фотография Андрей WPMasterKZ
    #1

    Андрей WPMasterKZ (wpmaster.kz)
    Очков активности: 367.5 4 темы, 37 сообщений, 5 баллов репутации

  • Фотография dos1k
    #2

    dos1k (dos1k.ru)
    Очков активности: 360 4 темы, 48 сообщений, 4 балла репутации

  • Фотография Vmir
    #3

    Vmir
    Очков активности: 144 Вне конкурса за определение пользователя месяца

  • Фотография BLIK
    #4

    BLIK
    Очков активности: 105 Вне конкурса за определение пользователя месяца

  • Фотография Роман Зеленков
    #5

    Роман Зеленков
    Очков активности: 105 9 тем, 43 сообщения, 1 балл репутации

  • Фотография Rodiola
    #6

    Rodiola
    Очков активности: 66 4 темы, 10 сообщений, 2 балла репутации

  • Фотография OlgaGetman
    #7

    OlgaGetman
    Очков активности: 64.5 Вне конкурса за определение пользователя месяца

  • Фотография agrx
    #8

    agrx (key-assort.ru)
    Очков активности: 63 0 тем, 21 сообщение, 2 балла репутации

  • Фотография Megoydagi
    #9

    Megoydagi (24ho.ru)
    Очков активности: 57 2 темы, 13 сообщений, 2 балла репутации

  • Фотография r0mZet
    #10

    r0mZet (rz-style.ru)
    Очков активности: 54 1 тема, 9 сообщений, 3 балла репутации

  • Показать весь ТОП 10
Поддержите форум! =)
Апдейты
  • Яндекс ИКС: 24.05.2019
  • Яндекс выдача: 26.05.2019
Топ 5 участников по репутации


Качественная паджинация

#1 gaaarfild

gaaarfild
  • Неактивные
  • 596 сообщений
  • Репутация: 0
0

Отправлено 20 Июнь 2010 - 01:54

Как организовать паджинацию, чтобы не просто подряд все номера страниц выводились. А например которые до 3 в обе стороны, а дальше многоточия и последняя и первая страница соответственно.

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 20 Июнь 2010 - 07:02

gaaarfild, Ничего сложного, просто у тебя в модуле навигации должна быть функция, которая отвечает за вывод ссылок - номеров страниц. Вот её надо доработать, она должна выводить от номера текущей страницы, несколько до, и несколько после. Для этого можно добавить в модуль либо одну, либо 2 функции, которые будут относительно текущего номера печатать 3 ссылки до, и которые будут печатать 3 ссылки после.

Не понимаю, в чем сложность реализации...
А если приглядеться, то лучше стоило бы засунуть эти функции навигации в отдельный класс, навигатор. Используя классы, намного удобнее держать состояния объекта (номер текущей страницы, сколько всего страниц, сколько всего записей, сколько записей на страницу, сколько страниц распечатать от текущей и др.) и методы, совершаемые над ним.
1) Проверка валидности переданных количества страниц, как "сколько всего записей/сколько записей на страницу == сколько всего страниц"
2) Вывод ссылок навигатора
3) Множество внутренних методов, недоступных извне, используемых для формирования нужного оформительского представления:
Есть ли ссылка на первую страницу и кликабельна ли она
Есть ли ссылка на последнюю страницу и кликабельна ли она
Есть ли ссылка на предыдущую страницу и кликабельна ли она
Есть ли ссылка на последующую страницу и кликабельна ли она

Много чего можно придумать, главное всё это для себя на бумажке представить, что откуда вызывается и что от чего зависит.
А класс навигации я уже выкладывал, там реализовано то, что тебе нужно :rolleyes:
  • 0

#3 gaaarfild

gaaarfild
    Topic Starter
  • Неактивные
  • 596 сообщений
  • Репутация: 0

Отправлено 21 Июнь 2010 - 09:22

Ну у меня она и есть в классе. Правда в статическом.Поэтому, не сильно отличается от функции.
  • 0

#4 ZiTosS

ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 21 Июнь 2010 - 11:20

gaaarfild, Тогда покажу тебе как это реализовано в одном классе:
Класс имеет параметры, некоторые из них:
	var $currentstartpage; // первая страница в выводе
var $currentendpage; // последняя страница в выводе
var $currentpage; // текущая страница
var $totalpages; // общее количество страниц (высчитывается в конструкторе и заносится)
var $maxpagesshown; // какой разброс в количестве страниц от текущей (дисперсия xD)

В конструкторе, при создании объекта вызываются методы, вот некоторые из них:
		$this->calculateCurrentStartPage(); // метод пересчитывает с какой страницы начать вывод навигации
$this->calculateCurrentEndPage(); // метод пересчитывает какой страницой закончить вывод навигации

Вот эти методы:
	 function calculateCurrentStartPage(){
$this->currentstartpage = $this->currentpage - $this->maxpagesshown;
if($this->currentstartpage < 0)
$this->currentstartpage = 0;
}

function calculateCurrentEndPage(){
$this->currentendpage = $this->currentpage + $this->maxpagesshown;
if($this->currentendpage > $this->totalpages)
$this->currentendpage = $this->totalpages;
}


А вывод ссылок осуществляется в цикле public методом getNavigate в цикле
for($x = $this->currentstartpage; $x < $this->currentendpage; $x++){
...
}

  • 0

#5 gaaarfild

gaaarfild
    Topic Starter
  • Неактивные
  • 596 сообщений
  • Репутация: 0

Отправлено 22 Июнь 2010 - 08:30

А сам этот один класс есть на земле? =)
  • 0

#6 ZiTosS

ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 22 Июнь 2010 - 11:36

gaaarfild, есть и я его уже кучу раз выкладывал.
Лови.

Прикрепленные файлы

  • Прикрепленный файл  pages.class.zip   1,47К   Количество загрузок: 94

  • 0



Похожие темы

  Название темы Автор Статистика Последнее сообщение

Оформление форума – IPBSkins.ru