我知道木材/帕洛阿尔托不再支持,但我正在使用它的旧帐户,并不熟悉的主题。
我已经能够创建一个将项目添加到购物车的按钮,但在单击add to cart之后,它将重定向到购物车页面,我只想添加项目并允许用户仍然浏览集合。任何建议都将是有帮助的,提前谢谢
<!-- /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);
};
发布于 2019-03-07 11:47:38
这将重定向到购物车页面,因为表单操作值就是这样定义的。因此,如果您希望在不重定向和重新加载页面情况下添加它,请使用Shopify AJAX 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>
木材购物主题上的示例实现
in theme.liquid after timber.js load CartJS
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/shopify-cartjs/0.4.1/cart.min.js"></script>
然后在下面的jQuery就绪函数中初始化CartJS
CartJS.init({{ cart | json }}, {
"dataAPI": true
});
在product-grid-item.liquid中添加此代码
<button data-cart-add="{{ product.variants.first.id }}">Add Product</button>
这是在我的木材主题的测试安装。
https://stackoverflow.com/questions/55033642
复制相似问题