跳过添加到购物车过程并直接从产品详细信息页面重定向到结帐页面,点击Shopify中的按钮

时间:2017-07-13 10:51:22

标签: jquery shopify checkout liquid

我正在为一位客户开发Shopify with Brooklyn Theme的项目。我们的客户只有三种产品可供展示,每种产品有4种变体。根据要求,我们不必在购物车页面上重定向,只需在添加变体后点击产品页面上的按钮即可重定向到结帐页面。

为此,我用谷歌搜索找到正确的解决方案,但无法找到合适的解决方案。所以我在jquery中对进程进行了编码,它正在运行。但我所做的过程是一种讨厌的方式,我想要一些干净的过程。我知道有一个应用程序,但我的客户不打算购买任何应用程序。

我的脚本是:

product-template.liquid 文件中,我注释了“添加到购物车”按钮,而是添加了一个按钮。

<button  name="checkoutty" class="btn to">Checkout</button>

该液体模板中的脚本

$(function() {
$(window).on('load',function(){
  $.ajax({
      type: "POST",
      url: '/cart/clear.js',
      success: function(){
        //alert('I cleared the cart!');
       },
      dataType: 'json'
    });

  })
});

 $(document).ready(function(){
$('.single-option-selector__radio').click(function(){
    if($(this).is(':checked')){
        $('.product-single__add-to-cart button[type="submit"]').removeClass('disabled').attr('disabled','');
           $('button[type="submit"]').attr('disabled','');

         }
               });
    $('.to').click(function(){
         $('[action="/cart/add"]').trigger('submit')
    });
 });

cart.liquid 模板中

<script>
  $(window).load(function(){
 $('.cart__checkout').trigger('click');

  });
</script>

虽然它正常工作但我对此不满意,因为它重定向到购物车页面然后结帐页面,因为我强制购物车添加表单提交,然后在购物车液体页面上点击btn点击事件。< / p>

在购物车页面上,我可能有额外的预加载器来隐藏内容。所有这些都是令人讨厌的过程。任何人都可以指导我做任何更简单和干净的过程。

提前致谢。

3 个答案:

答案 0 :(得分:1)

如果您能够识别所选的变体网址,则可以跳过其他所有功能,并使用以下网址结构直接登陆结帐页面 -

https://<your_shop_link>/cart/<variant_id>:<variant_quantity>?checkout

只需将您的客户重定向到上述结构化网址,即可完成。

答案 1 :(得分:0)

是的,它可以轻松完成。

HTML:

<form action="/cart" method="post" id="addToCart">
    <input type="hidden" name="id" value="{{ product.selected_or_first_available_variant.id }}" />
    <input type="submit" value="GO" name="checkout" style="display: none;"  />
    <a href="#" class="add-btn">Add Product</a>
</form>

jQuery的:

<script type="text/javascript">
    $('.add-btn').on('click', function(e) {
        var form = $('#addToCart');
        e.preventDefault()

        $.ajax({
            type: 'POST',                             
            url: '/cart/add.js',
            dataType: 'json',                               
            data: form.serialize(),
            success: function(data) {
                form.find('input[name="checkout"]').trigger('click');
            }
        });
    })
</script>

我们使用AJAX添加产品,并且成功时我们触发点击结帐按钮。所有这些都在产品页面上完成。

这就是你所需要的,没有重定向或复杂的逻辑。

答案 2 :(得分:0)

将变体添加到购物车后,您还可以将客户重定向到/cart/checkout

示例:

$('.add-btn').on('click', function(e) {
    var form = $('#addToCart');
    e.preventDefault()

    $.ajax({
        type: 'POST',                             
        url: '/cart/add.js',
        dataType: 'json',                               
        data: form.serialize(),
        contentType: false,
        processData: false,
        success: function(data) {
            document.location.href = '/cart/checkout';
        }
    });
})

使用此方法,您无需更改html或添加隐藏的输入元素。

单击隐藏的输入元素可能不适用于所有移动设备/浏览器。