我已经成功创建了一个包含4个产品的分组产品,并且一切正常。但是,其中一个项目是免费项目,仅在购买分组产品时可用。我的问题是,当我去篮子时,我可以编辑它并删除一些项目。如果有人从购物篮编辑分组产品并抛出消息,是否有办法删除免费项目,这可能吗?
我正在使用Magento v1.3.2.4
更新
我还有问题!使用Marius的建议,我在app / etc / modules /
中创建了一个名为FreePins的自定义模块,其中包含以下代码<?xml version="1.0"?>
<config>
<modules>
<test_FreePins>
<active>true</active>
<codePool>local</codePool>
</test_FreePins>
</modules>
</config>
我在app / code / local / test / FreePins / etc / config.xml中创建并添加了以下内容
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<test_FreePins>
<version>0.1.0</version>
</test_FreePins>
</modules>
<global>
</global>
<frontend>
<events>
<sales_quote_remove_item>
<observers>
<test_FreePins>
<class>test_FreePins/observer</class>
<method>removeFreeItems</method>
</test_FreePins>
</observers>
</sales_quote_remove_item>
</events>
</frontend>
</config>
最后,我在app / code / local / test / FreePins / Model / Observer.php中的Observer类中有以下内容
<?php
class test_FreePins {
public function removeFreeItems($observer) {
$quoteItem = $observer->getEvent()->getQuoteItem();
$productId = $quoteItem->getProductId();
print_r($productId);
if($productId != 238 || $productId != 22 || $productId != 4) {
return $this;
}
}
}
?>
我不完全确定这是否正确,因为我添加后无法从我的篮子中移除物品。如果我在模块配置中注释掉Frontend标签,该网站可以运行,但我的功能没有运行,有人可以帮忙吗?
答案 0 :(得分:0)
您可以为事件sales_quote_remove_item
创建观察者。在该检查中,删除的项目是否是分组产品的一部分。如果是,也要删除免费产品
像这样的东西(用模块名称替换[module]
):
在您的模块的config.xml
中,将其添加到<frontend>
标记内。
<events>
<sales_quote_remove_item>
<observers>
<[module]>
<class>[module]/observer</class>
<method>removeFreeItems</method>
</[module]
</observers>
</sales_quote_remove_item>
</events>
在您的观察者类中添加此方法:
public function removeFreeItems($observer){
$quoteItem = $observer->getEvent()->getQuoteItem();
$productId = $quoteItem->getProductId();
if (the $productId is not part of the grouped product){//add logic here
return $this;//stop here
}
foreach ($quoteItem->getQuote()->getAllItems() as $item){
if ($item is free){//add your logic here
$item->isDeleted(true);
}
}
}
答案 1 :(得分:0)
您可以使用“购物车价格规则”来完成此操作。但是,如果您使用这种方法,该项目将以购物车中的全价显示,并将应用折扣。如果你可以忍受,那么这是如何做到的: