Показать сообщение отдельно
  #5 (permalink)  
Старый 14.05.2015, 13:30
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Я вот так на PHP делал:

function generatePages($url, $count, $checked = 0, $extra = false) {
		$j = 1 + ($checked < 2 || ($checked > $count - 3) ? 0 : $checked - 2 - ($checked == $count - 3));
		for($i = 1, $l = $count > 7 ? 7 : $count; $i <= $l; $i++, $j++) {
			if($i > 3 && $count > 7) {
				if($i == 4) {
					$result[] = '<a class="pages-change" data-count="'.$count.'" data-url="'.$url.'" title="Выбрать другую страницу">...</a>';
					continue;
				}
				$k = $count - ($l - $i);
			}
			else $k = $j;
			$result[] = '<a '.($checked == $k ? 'class="checked"': 'href="'.$url.'?page='.$k.'"').'>'.$k.'</a>';
		}
		if($extra) {
			array_unshift($result, '<a'.($checked != 1 ? ' href="'.$url.'?page='.($checked - 1).'"' : '').' title="Предыдущая страница">«</a>');
			$result[] = '<a'.($checked != $count ? ' href="'.$url.'?page='.($checked + 1).'"' : '').' title="Следующая страница">»</a>';
		}
		return implode("\n", $result);
	}


generatePages(ссылка, количество страниц, текущая страница. Вкл/Выкл стрелочки)


Итого получается примерно такой код:

<div class="pages">
   <?=generatePages('', 12, 5, true)?>
</div>


<div class="pages">
   <a href="?page=4" title="Предыдущая страница">«</a>
   <a href="?page=4">4</a>
   <a class="checked">5</a>
   <a href="?page=6">6</a>
   <a class="pages-change" title="Выбрать другую страницу">...</a>
   <a href="?page=10">10</a>
   <a href="?page=11">11</a>
   <a href="?page=12">12</a>
   <a href="?page=6" title="Следующая страница">«</a>
</div>


P.S.: мой код конечно не идеален, но я особо не заморачивался.

P.P.S: только сейчас узнал, что это пагинацией называется. Пошёл менять названия классов и ф-ций.

Последний раз редактировалось ruslan_mart, 14.05.2015 в 13:51.
Ответить с цитированием