Тема: Разбивка на страницы в корзине

Здравствуйте, коллеги!
Возникла необходимость сделать разбивку на страницы в корзине, так как интернет магазин оптовый и клиенты могут заказывать от 150 до 600 наименований товара.
Я, конечно, намекал заказчику на то, что в большинстве магазинов есть ограничение (даже в 1с разбивается на несколько документов заказ), на что мне показали пару магазинов конкурентов, где пагинация в корзине есть.
В каком направлении двигаться? Какие возможные подводные камни?

2

Re: Разбивка на страницы в корзине

600 товаров в одном заказе - это конечно круто.

Наверное сперва важно определить, что в текущем положении дел не устраивает (сейчас же тоже можно просто взять и добавить 600 товаров), с чем нужно бороться так сказать:

1. Фатальные ошибки при открытии корзины (теоретически нужно проверить, чтобы памяти хватало скрипту)
2. Время открытия страницы корзины (интересно какое оно будет при 600 товарах)
3. Размер итогового HTML-кода и тормоза браузера
4. Чисто навигационная проблема, никаких тормозов - нет.

Если есть проблемы со временем отдачи страницы, то нужно смотреть, что можно закэшировать в кастомном классе корзины, который вам придется сделать.

Если есть проблемы только с размером генерируемого HTML кода, то можно поправить контроллер корзины, чтобы добавить пагинацию на уровне PHP (а не Mysql), так как все товары все равно загружаются в корзину.

В случае, если проблема чисто навигационная, то нужно просто писать визуальные фильтры на JS (быстрый поиск) для удобства работы с большой корзиной.

Возможные подводные камни:

- Возможно нужно будет увеличить max_input_vars в PHP.ini, чтобы принимать огромное количество переменных из админки (на странице редактирования заказа).

Повысить оценку Понизить оценку

3

Re: Разбивка на страницы в корзине

В самом крайнем случае, всегда можно просто написать полностью свой контроллер альтернативной корзины с реальной mysql пагинацией, собственными механизмами изменения количества товаров.

Повысить оценку Понизить оценку

Re: Разбивка на страницы в корзине

Спасибо за ответ!
Сейчас все замечательно работает, заказ оформляется за 4-5 секунд. Страница так же выводится достаточно быстро.
Сейчас проблема по пункту 3, т.е. на стороне клиента, так как 600 товаров - это простыня огромная, не все компьютеры выдерживают. Даже скриншоты окна браузера не сделаешь.
Думаю остановится на простом варианте с пагинацией на уровне php. Значит необходимо менять контроллер корзины для работы с номером страницы. Делается аналогично другим контроллерам с пагинацией?

5 Отредактировано Ярослав (14.09.2017 19:11:30)

Re: Разбивка на страницы в корзине

Сделал быстро с помощью jquery плагина DataTables. Получилось очень удобно. Одна из фишек этого плагина - выгрузка таблицы в XLS, CSV, PDF и фильтрация на лету.

Пробовал вариант с пагинацией на стороне php (просто отсекал массив товаров в шаблоне), но неудобно всю страницу перезагружать каждый раз при переходе со страницы на страницу.

Хочу попробовать изменить скрипт обновления товаров при изменении количества и удалении, чтобы загружать только информацию о текущем товаре и итогах корзины, а не всю корзину сразу.