Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Некоррректно работает Pagination


Wanderen
 Поделиться

Рекомендованные сообщения

Переходя на следующие страницы, предыдущие страницы имеют ссылку с пустым href=""

https://sumkiplus.ru/sumki/chemodany/chemodany-plastikovye?page=2

 

И еще можно вручную прописать любой номер страницы ?page=1000 и страница откроется, а должна быть 404-ая.

 

Сам pagination.php

<?php

// *    @copyright    OPENCART.PRO 2011 - 2017.

// *    @forum    http://forum.opencart.pro

// *    @source        See SOURCE.txt for source and other copyright.

// *    @license    GNU General Public License version 3; see LICENSE.txt


class Pagination {

    public $total = 0;

    public $page = 1;

    public $limit = 20;

    public $num_links = 5;

    public $url = '';

    public $text_first = '|<';

    public $text_last = '>|';

    public $text_next = '>';

    public $text_prev = '<';


    public function render() {

        $total = $this->total;


        if ($this->page < 1) {

            $page = 1;

        } else {

            $page = $this->page;

        }


        if (!(int)$this->limit) {

            $limit = 10;

        } else {

            $limit = $this->limit;

        }


        $num_links = $this->num_links;

        $num_pages = ceil($total / $limit);


        $this->url = str_replace('%7Bpage%7D', '{page}', $this->url);


        $output = '<ul class="pagination">';


        if ($page > 1) {

            $output .= '<li><a href="' . str_replace(array('&page={page}', '?page={page}'), '', $this->url) . '">' . $this->text_first . '</a></li>';

        

            if ($page - 1 === 1) {

                $output .= '<li><a href="' . str_replace(array('&page={page}', '?page={page}'), '', $this->url) . '">' . $this->text_prev . '</a></li>';

            } else {

                $output .= '<li><a href="' . str_replace('{page}', $page - 1, $this->url) . '">' . $this->text_prev . '</a></li>';

            }

        }


        if ($num_pages > 1) {

            if ($num_pages <= $num_links) {

                $start = 1;

                $end = $num_pages;

            } else {

                $start = $page - floor($num_links / 2);

                $end = $page + floor($num_links / 2);


                if ($start < 1) {

                    $end += abs($start) + 1;

                    $start = 1;

                }


                if ($end > $num_pages) {

                    $start -= ($end - $num_pages);

                    $end = $num_pages;

                }

            }


            for ($i = $start; $i <= $end; $i++) {

                if ($page == $i) {

                    $output .= '<li class="active"><span>' . $i . '</span></li>';

                } elseif($i == 1) {

                    $output .= '<li><a href="' . str_replace('&', '&', rtrim( str_replace('page={page}', '', $tmp_url), '?&')) . '">' . $i . '</a> ';

                } else {

                    if ($i === 1) {

                    $output .= '<li><a href="' . str_replace('&', '&', rtrim( str_replace('page={page}', '', $tmp_url), '?&')) . '">' . $i . '</a> ';

                    } else {

                        $output .= '<li><a href="' . str_replace('{page}', $i, $this->url) . '">' . $i . '</a>';

                    }

                }

            }

        }


        if ($page < $num_pages) {

            $output .= '<li><a href="' . str_replace('{page}', $page + 1, $this->url) . '">' . $this->text_next . '</a></li>';

            $output .= '<li><a href="' . str_replace('{page}', $num_pages, $this->url) . '">' . $this->text_last . '</a></li>';

        }


        $output .= '</ul>';


        if ($num_pages > 1) {

            return $output;

        } else {

            return '';

        }

    }

}

 

Изменено пользователем Wanderen
Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.