Как проверить наличие конкретного товара в корзине?

Как проверить на странице товара (product.html) наличие товара в корзине с помощью JS и/или Smarty?

1 ответ

  • 1
    replicant 18 января 2019 18:03 #

    Есть бесплатный плагин, который реализует данный функционал https://www.webasyst.ru/store/...

    Его конечно надо слегка под себя настроить и возможно "допилить", но из коробки он типа тоже "почти" рабочий.

    • +1
      Websiter Websiter 18 января 2019 18:21 #

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

      • +1
        replicant replicant 18 января 2019 23:07 #

        Поэтому и говорю, что он "почти" рабочий и надо маленько подпилить, тогда будет срабатывать сразу. Если надо, то могу подсказать где именно и что именно подкрутить, чтобы было мега-красиво и функционально.


        Дело в том, что при первом применении класс добавляется .noInCarts, а надо либо сразу менять, либо добавлять ещё класс .inCarts, а после обновления страницы останется только .inCarts.

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

        <script>
        jQuery( document ).ready(function( $ ) { if($('span').is('.noInCarts')) {
        if ($('.noInCarts').parents('form').find("button[type='submit'] span").length) {
        $('.noInCarts').parents('form').find("button[type='submit']").each(function(index, element) {
        $(element).on('click', function() {$(this).parents('form').find('.noInCarts').addClass('inCarts').html('Товар уже добавлен в корзину');}) }); } else {
        $('.noInCarts').parents('form').find("input[type='submit']").each(function(index, element) {
        $(element).on('click', function() {$(this).parents('form').find('.noInCarts').addClass('inCarts').html('Товар уже добавлен в корзину');}) }); } } if($('span').is('.inCarts')) {
        if ($('.inCarts').parents('form').find("button[type='submit'] span").length) {$('.inCarts').html('Товар уже добавлен в корзину');} else {$('.inCarts').html('Товар уже добавлен в корзину');} } });
        </script>

        А ещё в .css файл магазина надо ввести пару классов. Один пустотелый, а второй с оформлением под ваши задачи.

        .noInCarts {}
        .inCarts {padding: 3px; background: #C22; color: #FFF; margin: 0 auto 10px auto; display: block; border-radius: 3px; text-align: center; width: 200px; font-size: .85rem;}

        Тогда при клике на кнопку купить без обновления страницы тут же появится нормальная надпись красиво оформленная



        Там правок на 5 минут. И, кстати, если у вас сайт в облаке и нет доступа к исходникам, то решение тоже можно найти, т.к. правки касаются скрипта лежащего по сути на поверхности. Это зависит от того, насколько у вас всего много выводится через хук {frontend_head}. Если кроме этого плагина ничего, то в исходник вообще лезть не придется. :)

        Можно даже сделать плавное появление надписи при клике на кнопку купить и замену на время появления кнопки обратно на какой-нибудь прелоадер. Полосочка бежит, надпись "Товар уже добавлен" постепенно возникает. Когда надпись о наличии в корзине возникла, то вместо прелоадера возвращается кнопка купить снова. Красивенько будет. А можно просто кнопку переделывать на другого цвета с надписью "В корзине". Это будет актуально для list-thumbs.html на витрине например.

        Или вот так

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите