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


× Быстрый вопрос
Пользователь месяца
Olya23 Olya23 1-й за Июнь
Очков активности: 1 278 3 темы, 133 сообщения, 6 баллов репутации
ТОП самых активных за этот месяц
  • Фотография web-coder
    #1

    web-coder (good-hoster.ru)
    Очков активности: 999 0 тем, 74 сообщения, 9 баллов репутации

  • Фотография Андрей WPMasterKZ
    #2

    Андрей WPMasterKZ (wpmaster.kz)
    Очков активности: 477 2 темы, 47 сообщений, 6 баллов репутации

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

    Rodiola (rukodelkovo.ru)
    Очков активности: 243 1 тема, 78 сообщений, 2 балла репутации

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

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

  • Фотография maxnik
    #5

    maxnik (konovalovpavel.ru)
    Очков активности: 112.5 0 тем, 25 сообщений, 3 балла репутации

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

    FIvYUr (moy-evroopt.ru)
    Очков активности: 108 1 тема, 33 сообщения, 2 балла репутации

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

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

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

    lena220678
    Очков активности: 60 3 темы, 31 сообщение, 1 балл репутации

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

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

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

    katti8907
    Очков активности: 30 3 темы, 11 сообщений, 1 балл репутации

  • Показать весь ТОП 10
Поддержите форум! =)
Апдейты
  • Яндекс ИКС: 25.06.2019
  • Яндекс выдача: 21.07.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К   Количество загрузок: 95

  • 0



Похожие темы

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

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