Разбейте ссылки Разбиения на страницы PHP

У меня есть следующий метод, который создает и возвращает разметку для моих ссылок разбиения на страницы в 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, идеи?

7
задан Rabbott 16 May 2010 в 16:16
поделиться

2 ответа

Вы просто отображаете текущую страницу плюс предыдущую и следующие 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.

4
ответ дан 7 December 2019 в 09:57
поделиться

Вы могли бы сделать (на странице 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 для создания ссылок на другие страницы без перезагрузки страницы

1
ответ дан 7 December 2019 в 09:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: