doulai2025 2013-12-18 11:57
浏览 38
已采纳

Magento - 可在产品视图页面中从购物车中删除产品的选项

How do I add an option to remove a product from cart within product view page?

  • 写回答

1条回答 默认 最新

  • dtfpznrbn503027700 2013-12-18 12:52
    关注

    To remove an item from your cart by sku, you could create a controller with the below code

    $sku = 'xyz';
    $cartHelper = Mage::helper('checkout/cart');
    $items = $cartHelper->getCart()->getItems();
    foreach ($items as $item) {
        if ($item->getProduct()->getSku() == $sku) {
            $cartHelper->getCart()->removeItem($item->getItemId())->save();     
            break;
        }
    }
    

    Then on your product view page you could create a ajax/button that post the sku you want to remove

    See Magento - Remove Item from Cart by Sku

    Create: app/code/local/MagePal/DeleteCartItemBySku/etc/config.xml

    <?xml version="1.0"?>
    <config>
        <modules>
            <MagePal_DeleteCartItemBySku>
                <version>0.0.1</version>
            </MagePal_DeleteCartItemBySku>
        </modules>
        <frontend>
            <routers>
                <checkout>
                    <use>standard</use>
                    <args>
                        <modules>
                            <MagePal_DeleteCartItemBySku after="Mage_Checkout">MagePal_DeleteCartItemBySku</MagePal_DeleteCartItemBySku>
                        </modules>
                    </args>
                </checkout>
            </routers>
        </frontend>
    
        <global>
            <models>
                <deletecartitembysku>
                    <class>MagePal_DeleteCartItemBySku_Model</class>
                </deletecartitembysku>
            </models>
        </global>
    </config>
    

    Create: app/code/local/MagePal/DeleteCartItemBySku/controllers/CartController.php

    <?php   
      require_once Mage::getModuleDir('controllers', 'Mage_Checkout') . DS . 'CartController.php';
      //require_once 'Mage/Checkout/controllers/CartController.php';
    
      class MagePal_DeleteCartItemBySku_CartController extends Mage_Checkout_CartController
      {
        public function removeItemBySkuAction()
        {
            $sku = $this->getRequest()->getParam('sku');
            $cartHelper = Mage::helper('checkout/cart');
            $items = $cartHelper->getCart()->getItems();
    
            $found = false;
            foreach ($items as $item) {
                if ($item->getProduct()->getSku() == $sku) {
                    $cartHelper->getCart()->removeItem($item->getItemId())->save();  
                    $found = true;   
                    break;
                }
            }
    
            $message = ($found) ? "Item {$sku} Removed" : "Item {$sku} Not Found";
            Mage::getSingleton('core/session')->addSuccess($message);
            //Mage::getSingleton('core/session')->addError($message);
    
            $this->_redirectReferer();
        }
      }
    

    ?>

    Create: app/etc/modules/MagePal_DeleteCartItemBySku.xml

      <?xml version="1.0"?>
        <config>
               <modules>
                      <MagePal_DeleteCartItemBySku>
                              <active>true</active>
                              <codePool>local</codePool>
                      </MagePal_DeleteCartItemBySku>
               </modules>
        </config>
    

    Then your ajax/button url :

    domain.com/checkout/cart/removeItemBySku/sku/xyz

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办