我遇到以下问题:
当用户添加某些特定产品时,会有第3方扩展程序自动将产品添加到购物车中作为礼物。它也适用优惠券。例如,当用户想要购买电视时,它增加了免费的WiFi接收器。它增加了足够好的产品,但必须有购物车规则才能为这些产品提供100%的折扣。
我需要做的是使此扩展程序在没有购物车规则的情况下免费添加这些产品。我发现与折扣相关的唯一事件是sales_quote_address_discount_item
,但是使用它的任何操作都没有结果。
所以如果有人指出我正确的方向,我会非常感激:代码中的确切应用了这个折扣,我如何从这个扩展中做出相同的贡献?
答案 0 :(得分:7)
优惠券的折扣在Mage_SalesRule_Model_Validator
方法的process()
中应用。每次在引号上调用collectTotals()
时都会调用此方法。您需要覆盖此类(以及可能的其他类)以覆盖优惠券行为。您可以使用该方法salesrule_validator_process
中的事件而不是覆盖整个方法,但这取决于您需要更改的逻辑,以确定它是否出现在适合您的位置。< / p>
答案 1 :(得分:2)
您也可以在触发add_to_cart_after事件后添加自己的逻辑。 (例如创建自己的事件apply_discount_after_add_to_cart;)
答案 2 :(得分:2)
看看这个模块;它可以将产品作为礼物添加到购物车中,并在添加产品时将其价格设置为0 $:http://www.code4business.de/make-a-gift-magento-warenkorbpreisregeln-um-geschenke-erweitern/。
为此,它捕获了两个事件salesrule_validator_process和sales_quote_collect_totals_before。它不会重写任何东西。该代码也在http://www.webguys.de/magento/turchen-21-kostenlose-produkte-uber-warenkorb-preisregeln/详细描述。
它需要一个定价规则 - 但只是为了确定您获得礼物的产品(或条件)。礼物总是免费的;不需要额外的规则。