1. clean function in controller :
//clecn all products in compare list
public function cleanajaxAction() {
$items = Mage::getResourceModel('catalog/product_compare_item_collection');
if (Mage::getSingleton('customer/session')->isLoggedIn()) {
$items->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId());
} elseif ($this->_customerId) {
$items->setCustomerId($this->_customerId);
} else {
$items->setVisitorId(Mage::getSingleton('log/visitor')->getId());
}
/** @var $session Mage_Catalog_Model_Session */
$session = Mage::getSingleton('catalog/session');
try {
$items->clear();
Mage::helper('catalog/product_compare')->calculate();
echo json_encode(array('status'=>'1','msg'=>'clean compare products successed!'));
return;
}
catch (Exception $e){
//do nothing
echo json_encode(array('status'=>'2','msg'=>$this->__($e->getMessage())));
return;
}
}
2. jquery call it by ajax
//clean all ajax
(function($){
$('#clean-link').click(function(){
var ajax_url = $(this).attr('to_url');
$.ajax({
url: ajax_url,
type: "POST",
dataType:"json",
success: function(json_obj) {
if(json_obj.status == 1) {
$(".compare-a").removeClass("compared");
$(".clean-compare-box").hide();
} else {
alert(json_obj.msg);
}
}
});
})
})(jQuery);
3. html node:
<div class="clean-compare-box">
<a to_url="<?php echo $this->getUrl('catalog/product_compare/cleanajax');?>" id="clean-link" class="clean-compare-link" style="color: #000000; cursor:pointer;"><?php echo $this->__('clear all');?></a>
</div>
清理比较列表功能实现

本文介绍了一个Magento扩展中用于清理产品比较列表的功能实现方法。该功能通过Ajax调用控制器中的cleanajaxAction方法来清空用户的比较列表,并使用jQuery进行前端交互。文章详细展示了清理操作的具体流程,包括不同登录状态下的处理方式、异常捕获及反馈。

被折叠的 条评论
为什么被折叠?



