如何在单个产品页面下添加带有ajax功能的购物车?

时间:2016-12-13 07:22:10

标签: magento-1.9

我想在单个产品页面下添加购物车(下面添加到购物车按钮)我如何在Magento 1.9中执行此操作?

1 个答案:

答案 0 :(得分:0)

使用以下代码解决您的疑问:

open:template \ catalog \ product \ view.phtml

查找

productAddToCartForm.submit = function(button, url) {
           if (this.validator.validate()) {
               var form = this.form;
               var oldUrl = form.action;

               if (url) {
                  form.action = url;
               }
               var e = null;
               try {
                   this.form.submit();
               } catch (e) {
               }
               this.form.action = oldUrl;
               if (e) {
                   throw e;
               }

               if (button && button != 'undefined') {
                   button.disabled = true;
               }
           }
       }.bind(productAddToCartForm);

替换为:

productAddToCartForm.submit = function(button, url) {
            if (this.validator.validate()) {
                var form = this.form;
                var oldUrl = form.action;

                if (url) {
                   form.action = url;
                }
                var e = null;
//Start of our new ajax code
                if(!url){
                    url = jQuery('#product_addtocart_form').attr('action');
                }
                var data = jQuery('#product_addtocart_form').serialize();
                data += '&isAjax=1';   
                jQuery('#ajax_loader').show();
                try {
                    jQuery.ajax({
                          url: url,
                          dataType: 'json',
                          type : 'post',
                          data: data,
                          success: function(data){
                                jQuery('#ajax_loader').hide();
                                alert(data.status + ": " + data.message);
                          }
                    });
                } catch (e) {
                }

//新的ajax代码结束

this.form.action = oldUrl;
                if (e) {
                    throw e;
                }
            }
        }.bind(productAddToCartForm);

打开:catalog / product / view / addtocart.phtml

查找:

“class =”button btn-cart“onclick =”productAddToCartForm.submit(this)“>

替换为:

“class =”button btn-cart“onclick =”productAddToCartForm.submit(this)“> getSkinUrl( '图像/ OPC-Ajax的loader.gif')>?“/>

打开:app \ code \ core \ Mage \ Checkout \ controllers \ CartController.php

查找:$ params = $ this-> getRequest() - > getParams();在addAction()函数中

在上述行之后,请输入以下代码:

if($params['isAjax'] == 1){
            $response = array();
            try {
                if (isset($params['qty'])) {
                    $filter = new Zend_Filter_LocalizedToNormalized(
                    array('locale' => Mage::app()->getLocale()->getLocaleCode())
                    );
                    $params['qty'] = $filter->filter($params['qty']);
                }

                $product = $this->_initProduct();
                $related = $this->getRequest()->getParam('related_product');

                /**
                 * Check product availability
                 */
                if (!$product) {
                    $response['status'] = 'ERROR';
                    $response['message'] = $this->__('Unable to find Product ID');
                }

                $cart->addProduct($product, $params);
                if (!empty($related)) {
                    $cart->addProductsByIds(explode(',', $related));
                }

                $cart->save();

                $this->_getSession()->setCartWasUpdated(true);

                /**
                 * @todo remove wishlist observer processAddToCart
                 */
                Mage::dispatchEvent('checkout_cart_add_product_complete',
                array('product' => $product, 'request' => $this->getRequest(), 'response' => $this->getResponse())
                );

                if (!$this->_getSession()->getNoCartRedirect(true)) {
                    if (!$cart->getQuote()->getHasError()){
                        $message = $this->__('%s was added to your shopping cart.', Mage::helper('core')->htmlEscape($product->getName()));
                        $response['status'] = 'SUCCESS';
                        $response['message'] = $message;
                    }
                }
            } catch (Mage_Core_Exception $e) {
                $msg = "";
                if ($this->_getSession()->getUseNotice(true)) {
                    $msg = $e->getMessage();
                } else {
                    $messages = array_unique(explode("\n", $e->getMessage()));
                    foreach ($messages as $message) {
                        $msg .= $message.'<br/>';
                    }
                }

                $response['status'] = 'ERROR';
                $response['message'] = $msg;
            } catch (Exception $e) {
                $response['status'] = 'ERROR';
                $response['message'] = $this->__('Cannot add the item to shopping cart.');
                Mage::logException($e);
            }
            $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($response));
            return;
        }