【发布时间】:2017-11-13 23:54:42
【问题描述】:
how "Add To Cart" looks on a Category page
“templates\components\products\card.html”中的以下代码在客户点击类别页面上所选产品的“添加到购物车”按钮后将其引导至购物车。
{{#if add_to_cart_url }}
<a href="{{add_to_cart_url}}"
class="button button--small
card-figcaption-button">
{{lang 'products.add_to_cart'}}</a>
{{/if}}
"{{add_to_cart_url}}" == http://mystore.com/cart.php?action=add&product_id=15865.
如何不将客户重定向到他的购物车? 如何将商品添加到购物车并保持在同一页面上?
例如在产品页面,客户添加产品后,客户停留在同一页面,脚本打开模态确认窗口。
<!-- from templates\components\products\product-view.html -->
<form class="form" method="post" action="{{product.cart_url}}" enctype="multipart/form-data"
data-cart-item-add>
<input type="hidden" name="action" value="add">
<input type="hidden" name="product_id" value="{{product.id}}"/>
<div class="form-action">
<input id="form-action-addToCart"
data-wait-message=
"{{lang 'products.adding_to_cart'}}"
class="button button--primary" type="submit"
value="{{#if product.pre_order}}
{{lang 'products.pre_order'}}
{{else}}
{{lang 'products.add_to_cart'}}
{{/if}}">
</div>
此产品页面代码基于此脚本工作:assets\js\bundle.js
Product.prototype.addProductToCart = function addProductToCart(event, form) {
var _this4 = this;
var $addToCartBtn = (0, _jquery2.default)('#form-action-addToCart', (0, _jquery2.default)(event.target));
var originalBtnVal = $addToCartBtn.val();
var waitMessage = $addToCartBtn.data('waitMessage');
// Do not do AJAX if browser doesn't support FormData
if (window.FormData === undefined) {
return;
}
// Prevent default
event.preventDefault();
$addToCartBtn.val(waitMessage).prop('disabled', true);
// Add item to cart
_stencilUtils2.default.api.cart.itemAdd(new FormData(form), function (err, response) {
var errorMessage = err || response.data.error;
$addToCartBtn.val(originalBtnVal).prop('disabled', false);
// Guard statement
if (errorMessage) {
// Strip the HTML from the error message
var tmp = document.createElement('DIV');
tmp.innerHTML = errorMessage;
alert(tmp.textContent || tmp.innerText);
return;
}
// Open preview modal and update content
previewModal.open();
_this4.updateCartContent(previewModal, response.data.cart_item.hash);
});
};
更新: 这是类似的: Adding item to cart with BigCommerce Stencil
他能够使用 utils.api.cart.itemAdd() 我无法使它可行。
Stencil 中的钩子示例之一: https://stencil.bigcommerce.com/docs/hook-example-2-cart-dialog
- 我需要从分类页面将产品添加到购物车 (模板\组件\产品\card.html)
- 防止页面重定向。
- 更新购物车内容。 所有这些确实 addProductToCart(event, form) 功能。如何使用?
只是防止页面重定向不够,它会产生问题 更新购物车内容和数量。
在card.html(类别页面)和product-view.html(产品页面)上添加产品到购物车的区别也在于选项和数量。 在 card.html 上通过链接 {{add_to_cart_url}} 添加。 在 product-view.html 上,它通过表单提交和钩子发生 addProductToCart(事件,表单)。
【问题讨论】:
-
你能给我看看网站例子吗?
-
我添加了问题的更新。网站 silverforte.com
标签: node.js bigcommerce