Перейти к содержанию
Wild

Переход на несуществующий номер страницы

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

К примеру в некой категории 15 страниц товаров.
Если, к примеру, ввести ссылку ?page=17, то получаем страницу без товаров.
Как в этом случае сделать редирект на последнюю (или первую) страницу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в контроллере вам становится известно сколько страниц, там и проверяйте

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Просто в контроллере сначала строится массив фильтра со стартовой страницей ($page - 1) * $limit и другими параметрами.

потом на его основании получаем список продуктов getProducts

потом получаем их общее количество через getTotalProducts

и только потом уже можем рассчитать реальное количество страниц.

Т.е. при указанной page=999999 по факту мы уже получили ПУСТОЙ массив товаров с учетом фильтра.

Вот сижу и туплю...
Сделать перед основной выборкой товара такой же запрос и на основании его результата выставить $page=1 повторить его уже с этим параметром?
Кривоватый костыль...

Я не перфекционист, но все же может подскажете более красивое решение?

Или я чего-то упустил в логике работы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

странно, открыл 2.3

            $product_total = $this->model_catalog_product->getTotalProducts($filter_data);

            $results = $this->model_catalog_product->getProducts($filter_data);



А то что в $filter_data лежит офсет, то для getTotalProducts несущественно.

Даже в вашем случае - лишний запрос не помеха принять  решение

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я тупанул...
getTotalProducts ведь просто получает количество ВСЕХ товаров с учетом фильтра по категориям и выбранному фильтру (простите за тавтологию).
Лимиты, сортировка, порядок и стартовая позиция ей пофигу.

Спасибо.

Но возникла другая проблема...
Сделав $page=1, я получаю корректные данные, но в строке адреса все равно светится ?page=999.
Т.е. фактически мы находимся на странице 999 с данными от 1.
Как грамотно сделать корректный редирект?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Или может тупо сделать редирект на 404, как вы думаете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы делал редирект на первую страницу

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Wild сказал:

Или может тупо сделать редирект на 404, как вы думаете? 

правильно ,но при условии что 404 страница нестандартная,а с ссылками на главную, на основные категории сайта или на нужные товары , типа такого:

image.thumb.png.03e4d0e732034675796cf37e69fd1e96.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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