【发布时间】:2014-03-17 11:08:17
【问题描述】:
一点背景
一位客户正在使用 Bronto 向在 Magento 中放弃购物车的网站访问者发送电子邮件。 Bronto 从 Magento 的报告中取出废弃的手推车。客户遇到的问题是,他注意到在 Magento 中作为订单下的购物车没有从废弃的购物车报告中删除,导致他不小心将有关废弃购物车的电子邮件发送给已经下订单的客户.
我做了什么
我看了看,试图找出发生这种情况的一个主要原因,但我找不到任何原因。我尝试自己做一个测试订单,并注意到一旦我将一件商品添加到购物车中,我的购物车就会被视为废弃的购物车。我想自己“很奇怪,如果我的会话到期并且我还没有签出,这应该认为它被放弃了。”我做了一些研究,看看是否有人有同样的问题,但没有运气,虽然很接近。我采取的下一步是打开持久购物车。我打开了持久性,但这并没有帮助,因为我的购物车仍然被发送到废弃的购物车报告。即使在我结账后,购物车仍保留在报告中。然后我创建了一个观察 sales_order_place_after 事件的模块。该模块在下订单后检查订单并停用创建订单的报价(用户登录时“废弃的购物车”)。取消激活报价会从废弃的购物车报告中删除购物车。这工作正常,但一些报价似乎从裂缝中溜走,并没有设置为非活动状态,不知道为什么。
我的问题
1. 为什么 Magento 会在您向购物车添加商品后自动将其视为已放弃?
2. 我可以在哪里以及如何更改?
3. 为什么持久购物车不按它说的做? (除非持久会话过期或者我只是不了解持久购物车功能,否则不要将购物车发送到废弃的购物车,请解释)
4. 是什么原因导致我的模块没有将某些引号设置为非活动状态?(我在下面显示了代码。config.xml 和 Observer.php)
5. 我是否使用了正确的事件?
config.xml
<config>
<modules>
<RIS_AbandonedCartCleanUp>
<version>0.0.1</version>
</RIS_AbandonedCartCleanUp>
</modules>
<global>
<!-- Define the Model -->
<models>
<abandonedcartcleanup>
<class>RIS_AbandonedCartCleanUp_Model</class>
</abandonedcartcleanup>
</models>
<events>
<sales_order_place_after>
<observers>
<abandonedcartcleanup>
<type>singleton</type>
<class>RIS_AbandonedCartCleanUp_Model_Observer</class>
<method>remove_order_quote</method>
</abandonedcartcleanup>
</observers>
</sales_order_place_after>
</events>
</global>
</config>
Observer.php
<?php
class RIS_AbandonedCartCleanUp_Model_Observer{
public function __construct(){
}
//Keep an eye out for when all the sales order saves have been committed
public function remove_order_quote($observer){
// Gets the order which is being saved.
$order = $observer->getOrder();
$quoteId = $order->getQuoteId();
//Get the quote for this specific order
$quote = Mage::getModel('sales/quote')->load($quoteId);
//Check if the quote is active
if($quote->getIsActive() == 1){
//set the quote to inactive and save
$quote->setIsActive('0')
->save();
}
}
}
?>
【问题讨论】:
-
杰瑞,已经有一段时间了,但你能解决这个问题吗?我面临与 Bronto 相同的问题。
-
嘿 iUseMagentoNow,不,我没有解决此问题,但 Pixelkracht 确实提供了一些可用于解决问题的有用信息。我肯定会尝试使用 vanilla Magento(无扩展,全新安装),然后对其进行测试,看看是否存在问题。回来报告,让我知道我对你的发现感兴趣并愿意在需要时提供帮助。