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

Добрый день.
Нужна возможность покупки только одной позиции за раз (по идее последнего товара в корзине), соответственно как ограничить количество товара в корзине одной позицией?
Т.е. перед добавлением нужно просто затирать содержимое и все.
Через JS можно вообще топорно в пару строк сделать, но как-то таймаут на очистку корзины не очень хорошо использовать.
SHK.emptyCart();
var that = this;
setTimeout(function(){
self.toCart(that);
}, 1000);
Думаю можно через колбэк по идее сделать, хотя все равно надо допиливать будет немного.

Но хотелось бы конечно чтобы сервер таки участвовал в обработке.
По идее можно посадить обработчик на событие OnSHKaddProduct, но как в нем очистить корзину перед тем как добавить новый элемент не могу понять.

Сам себе ответил..
Можно чутка модифицировать shopkeeper.class.php
public function savePurchaseData( $purchaseArray = array() ){
// clear cart
$this->data = array();
$this->delivery = array();
// end clear cart

  //OnSHKAfterClearCart

Работает. Главное при обновлении не забыть про это

Вот тебе плагин, назови его к примеру "The last item in the cart"
вешай на него событие "OnSHKcalcTotalPrice"

<?php
$eventName = $modx->event->name;

switch ($eventName) {
     /* Рассчет полной цены товаров в корзине. $_SESSION['shk_order'], $price_total. */
    case "OnSHKcalcTotalPrice":
        /*Получаем список товаров в корзине*/
        $shk_order = $_SESSION['shk_order'];
        /*Обновляем данные с последним товаром в корзине*/
        $_SESSION['shk_order'] = array(0=>end($shk_order));
   
        $modx->event->output($price_total);
        break;
}

Спасибо! Не то событие значит смотрел.

если вдруг кому-то как мне надо еще количество одного товара ограничить - то можно добавить 1 строку

    $_SESSION['shk_order'] = array(0=>end($shk_order));
    //сюда!!!
    $_SESSION['shk_order'][0]['count'] = 1;
    $modx->event->output($price_total);

мало ли кто гуглить будет

if (end($shk_order)['count'] != 0)
    {
        $_SESSION['shk_order'] = array(0=>end($shk_order));
        $_SESSION['shk_order'][0]['count'] = 1;
    }

не плохо еще проверять вот это

Похоже, подключение к Форум | MODX Shopkeeper было разорвано, подождите, пока мы пытаемся восстановить соединение.