我知道Timber / Palo Alto不再受支持,但是我正在使用它的旧帐户工作,并且对该主题不熟悉。
我已经能够创建一个将商品添加到购物车的按钮,但是单击“添加到购物车”后,它会重定向到购物车页面,我只想添加商品并允许用户仍然浏览收藏夹。 任何建议都会有帮助,谢谢您
<!-- /snippets/product-grid-item.liquid -->
<form action="/cart/add" data-productid="{{product.id}}" method="post" enctype="multipart/form-data" id="AddToCartForm--{{section.id}}">
<div class = "variants-wrapper">
{% if variants_count > 1 %}
<select name="id" data-productid="{{product.id}}" id="productSelect--{{section.id}}" class="product-single__variants">
{% for variant in product.variants %}
{% if variant.available %}
<option {% if variant == product.selected_or_first_available_variant %} selected="selected" {% endif %} data-sku="{{ variant.sku }}" value="{{ variant.id }}">{{ variant.title }} - {{ variant.price | money_with_currency }}</option>
{% else %}
<option disabled="disabled">
{{ variant.title }} - {{ 'products.product.sold_out' | t }}
</option>
{% endif %}
{% endfor %}
</select>
{% else %}
<input name="id" data-productid="{{product.id}}" type="hidden" value="{{ product.variants[0].id }}">
{% endif %}
{% if sold_out %}
<input type="hidden" type="text" id="Quantity1" name="quantity" value="0" min="0" class="quantity-selector quantity-input">
<a class="btn" href="{{ product.url | within: collection }}">{{ 'products.product.view_item' | t }}</a>
{% else %}
<div class="qtydiv">
<input type="text" id="Quantity1" name="quantity" value="1" min="1" class="quantity-selector quantity-input">
</div>
<button type="submit" name="add" id="AddToCart" class="btn" style="display: inline">
<span id="AddToCartText">{{ 'products.product.add_to_cart' | t }}</span>
</button>
{% endif %}
</div>
</form>
ajax-cart.js.liquid
ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) {
var params = {
type: 'POST',
url: '/cart/add.js',
data: jQuery(form).serialize(),
dataType: 'json',
success: function(line_item) {
if ((typeof callback) === 'function') {
callback(line_item, form);
}
else {
ShopifyAPI.onItemAdded(line_item, form);
}
},
error: function(XMLHttpRequest, textStatus) {
if ((typeof errorCallback) === 'function') {
errorCallback(XMLHttpRequest, textStatus);
}
else {
ShopifyAPI.onError(XMLHttpRequest, textStatus);
}
}
};
jQuery.ajax(params);
};
答案 0 :(得分:0)
这将重定向到购物车页面,因为这是定义表单操作值的方式。因此,如果您要添加它而不进行页面重定向和重新加载,请使用Shopify AJAX API,该API允许您管理购物车上的CRUD操作。 Shopify AJAX API。
在上述情况下,您需要查看Add to Cart的功能。
发布数据
{
quantity: 2,
id: 794864229
}
示例代码
// Send a seralized form
jQuery.post('/cart/add.js', $('form[action="/cart/add"]').serialize());
// or construct post data
jQuery.post('/cart/add.js', {
quantity: 1,
id: 794864229,
properties: {
'First name': 'Caroline'
}
});
另一种易于实现的方法是使用CartJS
因此,使用数据API只是
<button data-cart-add="12345678">Add Product</button>
关于Timber Shopify主题的示例实现
在wood.js加载CartJS后,在 theme.liquid 中
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/shopify-cartjs/0.4.1/cart.min.js"></script>
然后在jQuery ready函数中的下面,初始化CartJS
CartJS.init({{ cart | json }}, {
"dataAPI": true
});
在 product-grid-item.liquid
中添加此代码<button data-cart-add="{{ product.variants.first.id }}">Add Product</button>
这正在测试我的Timber主题安装。