Последние темы


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

  • Добрый день.
    Нужна возможность покупки только одной позиции за раз (по идее последнего товара в корзине), соответственно как ограничить количество товара в корзине одной позицией?
    Т.е. перед добавлением нужно просто затирать содержимое и все.
    Через 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;
        }
    

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

 

Последние комментарии

  • Что нового в Shopkeeper 4.0.3:

    Исправлено некорректное определение языка по умолчанию В настройках в админке скрываются пароли. Добавлена возможность загружать картинки для категорий. shopkeeper.js - добавлена функция updateProductsPrice() для поддержки текстовых полей для цены. Twig-функции contentList() и includeContent() вынесены в отдельный класс. Добавлено событие "order.before_create". Сортировка всех полей типа контента перетаскиванием. Автоматическое сохранение сортировки полей при сохранении типа контента (не нужно нажимать на отдельную кнопку). В интерфейсе админа добавлено поле поиска для списка Composer-пакетов.

    Скачать можно на главной странице https://modx-shopkeeper.ru/

    Читать далее
  • Вот этот плагин:
    0_1550334109280_screenshot_022.png

    Вроде по умолчанию он выключен. Надо включить. Но плагин работает только на редактирование товаров, при удалении он делалать ничего не будет. Только что проверил кнопку, всё работает корректно, фильтры удаляются и добавляются, когда нужно. Но нужно очищать корзину после удаления товаров (возможно баг).

    Читать далее
  • J

    @Andchir Если нажимаю кнопочку "Обновить значения", то в фильтрах появляются как раз те самые удаленные значения фильтра.. Потом приходится Ручками выбирать эти удаленные значения.
    вот так выглядит Управление фильтрами когда удаляешь ручками: https://yadi.sk/i/_zw64CGkZ_sAYg
    А вот так выглядит когда просто нажимаешь "Обновить значения": https://yadi.sk/i/7WFbXC6xV5sQAw (красным выделено, то что приходится постоянно удалять

    Читать далее
  • J

    Участник @Jokerit написал в TagManager2 отображает в фильтре удаленные значения TV-полей:

    tmRefresh

    Так и не смог найти как включить

    Читать далее