0

我在 Magento 中成功创建了一个即时添加到购物车的按钮。我已经使用表单和 Java 脚本完成了,即页面上显示的每个产品都有自己的表单,并且相应地在表单上创建了它的 JavaScript 函数。

所以,如果我在一页中显示 60 个产品,它会导致 60 个表单和 60 个 js 函数。无论如何,我可以在所有表​​单/产品中使用单个 JS 吗?...我已经尝试过到处寻找,但无法找到解决方案。

这是表单和JS:

 <form action="<?php echo $this->getSubmitUrl($_product) ?>" method="post" id="product_addtocart_form<?php echo $this->htmlEscape($_product->getId())?>"<?php if($_product->getOptions()): ?> enctype="multipart/form-data"<?php endif; ?>>


   <button1  title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cartsd" onclick="productAddToCartForm<?php echo $this->htmlEscape($_product->getId())?>.submit(this)"><span><span><?php echo $buttonTitle ?></span></span></button>
    <?php echo $this->getChildHtml('', true, true) ?>
    </form>

JS:

 var productAddToCartForm<?php echo $this->htmlEscape($_product->getId())?> = new VarienForm('product_addtocart_form<?php echo $this->htmlEscape($_product->getId())?>');

     productAddToCartForm<?php echo $this->htmlEscape($_product->getId())?>.submit = function(button) {

         if (this.validator.validate()) {
             var form = this.form;
             var e = null;
             var oldLabel;

             try {
                 this.form.request({
                     parameters: { adeptaajax:'true' },
                     onSuccess: function(transport){
                         var json = transport.responseText.evalJSON();
                         var displayString = json.message;
                         if(json.success) {
                             jQuery("#topCartContent").load("page/ #element > *");
                             jQuery("#cartHeader1").load("page/ #element2 > *");
                         }
                         alert(displayString);
                     },
                     onFailure: function(transport){

                         alert("<?php echo $this->__('There has been a problem adding your product. Please try again later.'); ?>");
                     }
                 });
             } catch (e) {
             }
             if (e) {
                 throw e;
             }
         }
     }.bind(productAddToCartForm<?php echo $this->htmlEscape($_product->getId())?>);
 </script>
4

1 回答 1

0

由于您不想触发 60 个请求并且没有能够添加多个产品的结帐购物车控制器操作,因此您可能必须在扩展类中编写自己的 addMultipleAction Mage_Checkout_CartController

我通过 2 秒的谷歌搜索找到了一个博客条目,似乎正是这样做的:

http://www.danneh.org/2010/09/adding-multiple-products-to-the-cart-simultaneously-in-magento/

于 2013-07-06T22:53:13.260 回答