如果从该类别添加到购物车中的产品,我需要在页面加载时从特定类别(ID = 13的类别)中删除购物车产品。我已经研究了很长一段时间并研究它,但我找不到任何可以帮助我完成功能以获得我想要的结果的东西。在此先感谢您的帮助。
答案 0 :(得分:2)
您可以使用magento Observer事件,即 checkout_cart_save_before 来达到您的要求。我通过创建以下模块来实现这一目标,该模块不允许用户将产品添加到特定类别的购物车中。
您需要为此创建一个模块:
使用以下代码在 app / etc / modules / Tanymart_Removecart.xml 下创建模块注册文件:
<?xml version="1.0"?>
<config>
<modules>
<Tanymart_Removecart>
<active>true</active>
<codePool>community</codePool>
</Tanymart_Removecart>
</modules>
</config>
现在在社区代码池下,创建 config.xml 文件。文件路径为 app / code / community / Tanymart / Removecart / etc / config.xml
<?xml version="1.0"?>
<config>
<modules>
<Tanymart_Removecart>
<version>0.1.0</version>
</Tanymart_Removecart>
</modules>
<global>
<models>
<tanyremovecart>
<class>Tanymart_Removecart_Model</class>
</tanyremovecart>
</models>
<events>
<checkout_cart_save_before>
<observers>
<remove_category_item>
<class>Tanymart_Removecart_Model_Observer</class>
<method>removeCategoryCart</method>
</remove_category_item>
</observers>
</checkout_cart_save_before>
</events>
</global>
<frontend>
<routers>
<tanyremovecart>
<use>standard</use>
<args>
<module>Tanymart_Removecart</module>
<frontName>tanyremovecart</frontName>
</args>
</tanyremovecart>
</routers>
</frontend>
</config>
现在在模型目录中创建 Observer.php 。文件路径 app / code / community / Tanymart / Removecart / Model / Observer.php ,代码如下:
<?php
/**
* @category Tanymart
* @package Tanymart_Removecart
* @author Bachcha Singh
* @copyright Copyright (c) 2017
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
class Tanymart_Removecart_Model_Observer {
public function removeCategoryCart($observer){
$items = $observer->getEvent()->getCart()->getItems();
$oCheckout = Mage::getSingleton( 'checkout/session' );
$oQuote = $oCheckout->getQuote();
foreach($items as $item) {
$_product = $item->getProduct();
if(in_array(13, $_product->getCategoryIds())) {
$itemId = $item->getItemId();
$oQuote->removeItem($itemId)->save();
}
}
}
}
将上面的 13 替换为您的特定类别。
那就是它。 希望它会对你有所帮助。