的Config.xml
<sales_quote_collect_totals_before>
<observers>
<discount>
<class>discount/observer</class>
<method>discountMethod</method>
</discount>
</observers>
</sales_quote_collect_totals_before>
Observer.php
public function discountMethod($observer)
{
$quote = $observer->getEvent()->getQuote();
$quote->setGrandTotal(1);
$quote->setBaseGrandTotal(1);
$quote->save();
}
我已经创建了config.xml和Observer.php,而且该代码根本不起作用。 $ quote-&gt; getData()显示:
[grand_total] => 1
[base_grand_total] => 1
但是页面上的GrandTotal仍显示真实价格
我正在使用默认Magento 1.6.2 ,并且在 checkout / onepage / index 上,每次点击继续时都会触发该功能,但我不知道如何在引用上设置grandTotal / BaseGrandTotal。
答案 0 :(得分:4)
您正在收听sales_quote_collect_totals_before
,因此在此事件之后收集包括grandTotal
在内的总计,并且总收集器会在运行时将grandTotal
重置为0.
如果您使用的是sales_quote_collect_totals_after
,则总数应该是正确的,但税收计算会搞砸,因为它将基于旧的总数。
我能想到的唯一干净的方法是使用<before>tax</before>
这是一个关于如何创建新的总收藏家的链接: http://magento.ikantam.com/qa/how-add-discount-total-magento
希望有所帮助