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
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报