У меня есть следующий метод, который создает и возвращает разметку для моих ссылок разбиения на страницы в PHP.
public function getPaginationLinks($options) {
if($options['total_pages'] > 1) {
$markup = '<div class="pagination">';
if($options['page'] > 1) {
$markup .= '<a href="?page=' . ($options['page'] - 1) . ((isset($options['order_by'])) ? "&sort=" . $options['order_by'] : "") . '">< prev</a>';
}
for($i = 1; $i <= $options['total_pages']; $i++) {
if($options['page'] != $i) {
$markup .= '<a href="?page='. $i . ((isset($options['order_by'])) ? "&sort=" . $options['order_by'] : "") . '">' . $i . '</a>';
}
else {
$markup .= '<span class="current">' . $i . '</span>';
}
}
if($options['page'] < $options['total_pages']) {
$markup .= '<a href="?page=' . ($options['page'] + 1) . ((isset($options['order_by'])) ? "&sort=" . $options['order_by'] : "") . '">next ></a>';
}
$markup .= '</div>';
return $markup;
}
else {
return false;
}
}
Я просто недавно обнаружил (к моему удивлению), что достиг 70 + страницы, что означает, что существует теперь 70 +, соединяет показ внизу..
Я задаюсь вопросом, может ли кто-то помочь мне разбить это.. Я не уверен, как большинство работ разбиения на страницы до показа чисел, если я иду, говорит.. страница 30, идеи?
Вы просто отображаете текущую страницу плюс предыдущую и следующие x
(скажем, 4) страницы.
Если вы находитесь на странице 1:
1 2 3 4 5
странице 35:
31 32 33 34 35 36 37 38 39
странице 70:
66 67 68 69 70
Вы также можете добавить быструю ссылку на первую и последнюю страницу, используя "
и "
, например.
Пример:
$x = 4;
for ($i = $currentPage - $x; $i < $currentPage; $i++)
{
if ($i >= 1) { /* show link */}
else { /* show ellipsis and fix counter */ $i = 1; }
}
/* show current page number without link */
for ($i = $currentPage + 1; $i < $currentPage + $x; $i++)
{
if ($i <= $totalPages) { /* show link */}
else { /* show ellipsis and break */ break; }
}
Вы также можете реализовать бесконечную историю / пагинацию, что очень круто. =)
UPDATE: более элегантная версия этого @ Codepad.
Вы могли бы сделать (на странице 15)
[View Previous] 12 13 14 [15] 15 17 18 [View More]
Где ссылка [Просмотреть больше] приводит к остальным (или лишь нескольким) ссылкам страницы. Это сохраняет вещи незагроможденными, позволяя пользователю перемещаться по всем страницам.
Пример (после нажатия «Просмотреть предыдущий»)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 15 17 18 [View More]
или (просто покажите еще несколько) [Подробнее] 7 8 9 10 11 12 13 14 [15] 15 17 18 [Подробнее]
Когда я говорю «получить», я имею в виду использование javascript для создания ссылок на другие страницы без перезагрузки страницы