我正在为一位客户开发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>
在购物车页面上,我可能有额外的预加载器来隐藏内容。所有这些都是令人讨厌的过程。任何人都可以指导我做任何更简单和干净的过程。
提前致谢。
答案 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或添加隐藏的输入元素。
单击隐藏的输入元素可能不适用于所有移动设备/浏览器。