Добавление подарочного товара в корзину при достижении определенной суммы заказа.

Добрый день!
Есть такая задача:
При достижении суммы заказа более 7000 руб. автоматически добавлять подарочный товар с id = 488 в корзину.
Одна известная нейросеть помогла с таким скриптом на ajax который считает, на какую сумму осталось добавить товаров, чтобы получить подарок.

Вывод суммы заказа:
<p>Итого <span class="ms2_total_cost">{$total.cost}</span></p>

Вывод блока с подсказкой на какую сумму осталось добавить товаров:
<div class="cart-more">
	<p>Добавьте ещё на <span class="gift"></span> руб. и получите подарок</p>
</div>

Скрипт который это обрабатывает:
<script>
    $(document).ready(function(){
      var totalCost = Number($(".ms2_total_cost").text().replace(/\s/g, ''));
      var giftCost = 7000 - totalCost;
    
      $(".gift").text(giftCost);
    
      $(".ms2_total_cost").bind("DOMSubtreeModified", function(){
        var updatedCost = Number($(".ms2_total_cost").text().replace(/\s/g, ''));
        var updatedGiftCost = 7000 - updatedCost;
    
        if (updatedGiftCost <= 0) {
          $(".cart-more").hide();
          
          //    СЮДА НАДО ДОБАВИТЬ КОД КОТОРЫЙ ДОБАВИТ ТОВАР С ID = 488 В КОРЗИНУ
          
        } else {
          $(".cart-more").show();
        }
        
        $(".gift").text(updatedGiftCost);
      });
    });
</script>

Мне нужна помощь в этом скрипте. Как доработать скрипт, чтобы он добавлял товар с id = 488 в корзину? У кого есть опыт с таким, поделитесь пожалуйста.
Андрей Шевяков
08 августа 2023, 10:32
modx.pro
388
0
Поблагодарить автора Отправить деньги

Комментарии: 9

Андрей
09 августа 2023, 14:25
0
Что то типа такого нужно:
set id = 488; // тут id товара
$.ajax({
    type: "POST",
    url: "[[++site_url]]assets/components/minishop2/action.php",
    data: "id=" + id + "&count=1&options=[]&ms2_action=cart/add&ctx=web",
    success: function(msg) {
        alert('товар добавлен в корзину');
    }
});

Либо как вариант использовать дополнение для управления подарками — msGiftCart
    Андрей Шевяков
    09 августа 2023, 14:38
    0
    Спасибо, попробую ваш скрипт.
    msGiftCart с последним минишопом конфликтует, там никак не пофиксят.
    Николай Савин
    09 августа 2023, 15:23
    +1
    Ужас ))
    Правильнее плагином это делать внутри MODX.
      Андрей Шевяков
      09 августа 2023, 15:29
      0
      Николай, направь пожалуйста на правильный путь, где может примеры есть? Или что-то подобное.
      Хочется разобраться самому с такой задачей. Я понимаю что наверное тут с самого начала уже подход не верный у меня.
        Николай Савин
        09 августа 2023, 15:37
        +1
        Навскидку, без реального кейса под рукой.
        Я бы написал плагин на событие msOnGetOrderCost
        Схема плагина будет вот такого примерно вида

        if ($cost < 7000) {return true;}
        // тут проверяю состав корзины, не лежит ли уже подарок там
        $cartArr = $cart->get();
        foreach($cartArr as $row) {
            // Если уже есть подарок выходим 
            return true;
        }
        // если дошли сюда пора добавлять подарок
        $cart->add($id);
          Андрей Шевяков
          09 августа 2023, 15:42
          0
          Направление уловил. Спасибо. Пошел изобретать.
          Донатик на развитие miniShop2 сейчас закину.
            Николай Савин
            09 августа 2023, 15:44
            0
            Ну за донатик я тебе прям готовый код напишу ))
              Андрей Шевяков
              09 августа 2023, 15:46
              0
              Я скинул немножко, попробовать самому хочется. Результат сюда скину.
              Если не получится, то за больший донатик напишу тебе, за помощью))))
                Николай Савин
                09 августа 2023, 15:47
                0
                По рукам, мой контакт у тебя есть, не стесняйся
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      9