Усеченная нумерация страниц с PHP - PullRequest
0 голосов
/ 24 апреля 2020

Привет, я пытаюсь развить нумерацию страниц, но мои цифры переполнены. Я хотел бы, чтобы это было <1234..15> например. Я знаю, что здесь есть несколько примеров, но я не могу полностью понять, что они там делают, и связать это с моими. Так в основном, где и как я могу написать это, если заявление со следующим кодом?

<?php
    $url = $this->url('stack-overflow');

    $next_data = $links['next_data'];

    $next_button = $links['current_page'] + 1;
    $prev_button = $links['current_page'] - 1;
    ?>
    <nav aria-label="Page navigation example">
        <ul class="pagination pagination-circle pg-blue">
            <?php
            if ($links['current_page'] > 1) {
            ?>
                <li class="page-item">
                    <a class="page-link" href="<?= $url . '?page=' . $prev_button ?>" aria-label="Previous">
                        <span aria-hidden="true">&laquo;</span>
                        <span class="sr-only">Previous</span>
                    </a>
                </li>
                <?php
            }
            //Loop through total pages
            for ($i = 1; $i <= $links['total_pages']; $i++) {
                if ($i === $links['current_page']) {
                ?>
                    <li class="page-item active"><a class="page-link" href="<?= $url . '?page=' . $i ?>"><?= $i ?></a></li>
                <?php
                } else {
                ?>
                    <li class="page-item"><a class="page-link" href="<?= $url . '?page=' . $i ?>"><?= $i ?></a></li>
                <?php
                }
            }

            if (!empty($next_data)) {
                ?>
                <li class="page-item">
                    <a class="page-link" href="<?= $url . '?page=' . $next_button ?>" aria-label="Next">
                        <span aria-hidden="true">&raquo;</span>
                        <span class="sr-only">Next</span>
                    </a>
                </li>
            <?php
            }
            ?>
        </ul>
    </nav>

1 Ответ

2 голосов
/ 24 апреля 2020

Вы должны учитывать различные возможности.

Код довольно грязный, я рекомендую вам реализовать библиотеку Paginator, чтобы избежать всего этого кода спагетти.

<?php
    $url = $this->url('stack-overflow');

    $next_data = $links['next_data'];

    $next_button = $links['current_page'] + 1;
    $prev_button = $links['current_page'] - 1;
    ?>

    <nav aria-label="Page navigation example">
    <ul class="pagination pagination-circle pg-blue">
        <?php
        if ($links['current_page'] > 1) {
        ?>
            <li class="page-item">
                <a class="page-link" href="<?= $url . '?page=' . $prev_button ?>" aria-label="Previous">
                    <span aria-hidden="true">&laquo;</span>
                    <span class="sr-only">Previous</span>
                </a>
            </li>
            <?php
        }
        // Below pages
        $pagesToShow = 5;
        if ($links['current_page'] > 1) {
            for ($i = 1; $i >= $links['current_page']; $i++) {
                if ($pagesToShow === $i) break;
                $pagesToShow++;

                if ($i === $links['current_page']) {
                ?>
                    <li class="page-item active"><a class="page-link" href="<?= $url . '?page=' . $i ?>"><?= $i ?></a></li>
                <?php
                break;
                } else {
                ?>
                    <li class="page-item"><a class="page-link" href="<?= $url . '?page=' . $i ?>"><?= $i ?></a></li>
                <?php
                }
            }
        }

        // Above
        if ($links['current_page'] !== $links['total_pages']) {
            for ($i = $links['current_page'] + 1; $i >= $links['total_pages']; $i++) {
                if ($pagesToShow === $i) break;
                $pagesToShow++;
                ?>
                    <li class="page-item"><a class="page-link" href="<?= $url . '?page=' . $i ?>"><?= $i ?></a></li>
                <?php
                }
            }
        }

        if ($links['current_page'] + $pagesToShow <= $links['total_pages']) {
            ?>
            <li class="page-item">
                <a class="page-link" href="<?= $url . '?page=' . $next_button ?>" aria-label="Next">
                    <span aria-hidden="true">&raquo;</span>
                    <span class="sr-only">Next</span>
                </a>
            </li>
        <?php
        }
        ?>
    </ul>
    </nav>
}
...