首页 文章

WooCommerce插件,通过Ajax添加变化到购物车

提问于
浏览
2

我正在寻找通过Ajax添加产品变体的解决方案 .

我发现所有WooCommerce基本功能都允许将产品添加到购物车,只有它不是变化项目 .

即时通讯使用 <?php echo woocommerce_template_loop_add_to_cart() ?> 显示添加到购物车按钮,但此按钮是常规提交按钮 .

如何让变量项使用Ajax添加到购物车?

1 回答

  • 0

    我创建了和AJAX添加到购物车的变量产品,如下所示:

    抱歉延迟,这是扩展答案:

    我包含了一个名为added-to-cart.js的新js文件,该文件包含以下代码 . 还有一些额外的代码用于处理弹出窗口并增加您可能想要删除的购物车计数器 .

    /* 开始 */

    jQuery(function($) {
    
    /* event for closing the popup */
    $("div.close").hover(
                    function() {
                        $('span.ecs_tooltip').show();
                    },
                    function () {
                        $('span.ecs_tooltip').hide();
                    }
                );
    
    $("div.close").click(function() {
        disablePopup();  // function close pop up
    })
    
    $("a.close").click(function() {
        disablePopup();  // function close pop up
    });
    
    $(this).keyup(function(event) {
        if (event.which == 27) { // 27 is 'Ecs' in the keyboard
            disablePopup();  // function close pop up
        }
    });
    
        $("div#backgroundPopup").click(function() {
        disablePopup();  // function close pop up
    });
    
    $('a.livebox').click(function() {
        //alert('Hello World!');
    return true;
    });
    
    setAjaxButtons(); // add to cart button ajax
    
    function loading() {
        $("div.loader").show();
    }
    function closeloading() {
        $("div.loader").fadeOut('normal');
    }
    
    // AJAX buy button for variable products
    function setAjaxButtons() {
       $('.single_add_to_cart_button').click(function(e) {
          var target = e.target;
          loading(); // loading
          e.preventDefault();
          var dataset = $(e.target).closest('form');
          var product_id = $(e.target).closest('form').find("input[name*='product_id']");
          values = dataset.serialize();
    
            $.ajax({
              type: 'POST',
              url: '?add-to-cart='+product_id.val(),
              data: values,
              success: function(response, textStatus, jqXHR){
                    loadPopup(target); // function show popup
                    updateCartCounter();
                },
            });    
          return false;
       });    
    
    }
    
    function updateCartCounter() {
        var counter = $('.widget_shopping_cart_content').text().replace(/\s/g, '');
        if (counter == '') {
            $('.widget_shopping_cart_content').text("1");
        }
        else {
            $('.widget_shopping_cart_content').text(++counter);
        }
    }
    
    var popupStatus = 0; // set value
    
    function loadPopup(target) {
    
        var currentPopup = $(target).parents(".single_variation_wrap").find("#toPopup");
        var currentBgPopup = $(target).parents(".single_variation_wrap").find("#backgroundPopup");
    
        if(popupStatus == 0) { // if value is 0, show popup
            closeloading(); // fadeout loading
            currentPopup.fadeIn(0500); // fadein popup div
            currentBgPopup.css("opacity", "0.7"); // css opacity, supports IE7, IE8
            currentBgPopup.fadeIn(0001);
            popupStatus = 1; // and set value to 1
        }
    }
    
    function disablePopup() {
        if(popupStatus == 1) { // if value is 1, close popup
            $(".single_variation_wrap > div:nth-child(2)").fadeOut("normal");
            $(".single_variation_wrap > div:nth-child(4)").fadeOut("normal");
            popupStatus = 0;  // and set value to 0
        }
    }
    }); // jQuery End
    

相关问题