我一直在使用magento cart pro扩展程序。对于ajax添加到购物车功能,我已按照以下链接Excellance Magento Blog
它工作正常。但我已经搜索了很多关于ajax删除项目的购物车,但谷歌总是返回我与第三方扩展。我找不到购物车删除产品的教程。所以我想,从免费的第三方扩展中获取一个参考,它既有添加到购物车又从购物车功能中删除。我发现这个以下扩展具有上述功能和工作摇滚。 Ajax cart pro。
我检查了这个扩展编码部分。但我真的很困惑,我找不到哪些代码正在执行删除功能。我认为它们只覆盖控制器文件中的deleteAction。我甚至无法理解我在做什么。我只需要指导就可以添加ajax删除功能。
如果有人有想法或找到任何相关教程,请与我分享您的想法朋友。
答案 0 :(得分:4)
潜入Ajaxcart扩展,在控制器的动作中,我们可以找到(是的,你是对的!),以下行实际上是删除了一个项目:
<强> $这 - &GT; _getCart() - &GT;的removeItem($ ID) - &GT;保存(); 强>
public function deleteAction() {
$id = (int) $this->getRequest()->getParam('id');
if ($id) {
try {
$this->_getCart()->removeItem($id)
->save();
} catch (Exception $e) {
$_response = Mage::getModel('ajaxcart/response');
$_response->setError(true);
$_response->setMessage($this->__('Cannot remove the item.'));
$_response->send();
Mage::logException($e);
}
}
$_response = Mage::getModel('ajaxcart/response');
$_response->setMessage($this->__('Item was removed.'));
//append updated blocks
$this->getLayout()->getUpdate()->addHandle('ajaxcart');
$this->loadLayout();
$_response->addUpdatedBlocks($_response);
$_response->send();
}
所以回答你的问题“哪个代码正在删除”,它肯定在其中;)
要理解整个过程,你应该记住以下几点:
ajaxcart.js - 他们正在重写Magento的setLocation函数,然后执行ajax调用(在ajaxCartSubmit方法中):
var oldSetLocation = setLocation;
var setLocation = (function() {
return function(url){
if( url.search('checkout/cart/add') != -1 ) {
//its simple/group/downloadable product
ajaxcart.ajaxCartSubmit(url);
渲染 按钮 使用网址助手,如下所示:
<button type="button" title="Add to Cart" class="button btn-cart"
onclick="setLocation('<?php echo $this->helper('checkout/cart')->getAddUrl($_product, $additional = array('qty' => 1));?>')">
+
</button>
updateBlocks。 有一个Observer和 响应 模型,用于获取块列表更新/替换前端,渲染其内容并将em放到json响应中。
$updated_blocks = unserialize(Mage::getStoreConfig('ajaxcart/general/update_blocks'));
// ... for each do a $layout->getBlock('<blockName>')->toHtml() and add to json responce
从核心布局和附加的ajaxcart句柄(layout / ajaxcart.xml)获取的块定义。 (cart_sidebar,top.links&amp; etc.)
答案 1 :(得分:0)
您可以参考以下代码
<?php
$id = '100'; // replace product id with your id
$cartHelper = Mage::helper('checkout/cart');
$items = $cartHelper->getCart()->getItems();
foreach($items as $item):
if($item->getProduct()->getId() == $id):
$itemId = $item->getItemId();
$cartHelper->getCart()->removeItem($itemId)->save();
break;
endif;
endforeach;
?>