modx-pro / miniShop2

Second version of simple online shop for MODX Revolution
GNU General Public License v2.0
150 stars 128 forks source link

При изменении количества одного товара в корзине возвращать на фронт не только текущее кол-во товара, но и старое #908

Open createit-ru opened 9 months ago

createit-ru commented 9 months ago

Запрос функции / Feature request

Когда идет запрос на /assets/components/minishop2/action.php с action=cart/change добавить к возвращаемым данным прошлое количество товара в корзине (сейчас возвращается только текущее количество).

Зачем это нужно / Why is it needed?

Для разработки надстроек над корзиной miniShop на фронте требуется информация о корзине и об изменениях в ней, в частности о том, сколько и какого товара пользователь добавляет и удаляет. Доступ к этим данным можно получить посредством Callbacks (miniShop2.Callbacks.add) таких как Cart.add, Cart.remove, Cart.change.

Когда мы добавляем колбек на событие Cart.change.response.success то в response есть информация о текущем состоянии корзины, но нет сведений о том, сколько товара было добавлено или удалено. При добавлении или удалении товаров (add, remove) подобной проблемы нет, либо товара в корзине не было (кол-во равно 0), либо не стало (удалили, тоже кол-во 0).

К примеру это может потребоваться для передачи сведений в систему аналитики (Пользователь убрал N шт. товара из корзины). Такие системы аналитики как Яндекс.Метрика и Google.Analitycs при изменении кол-ва товара в корзине требуют передавать сколько товара было добавлено или убрано из корзины, а не просто новое количество.

Предлагаемое решение(я) / Proposed solution (s)

В методе change($key, $count) класса msCartHandler добавить в переменной $status еще один ключ $status['old_count'], отражающий предыдущее количество данного товара в корзине.