我会对废弃的购物车问题采取稍微不同的方法。
每次通过添加产品来“创建购物车”时,您都会创建一个 Mage_Sales_Model_Quote,magento 将其存储在数据库中。每次完成订单时,都会创建一个 Mage_Sales_Model_Order 对象。Mage_Sales_Model_Order 对象保留对其原始报价 ID 的引用。
因此,您可以查询所有订单以获取报价 ID 列表,然后创建报价集合并过滤有订单的报价。这将为您提供每次放弃购物车的列表。
//may start to degrade as orders pile up. Add date filters to
//prevent or look into properly joining things in.
$orders = Mage::getModel('sales/order')
->getCollection()
->addAttributeToSelect('*');
var_dump('Order Count', count($orders));
$quote_ids = $orders->getColumnValues('quote_id');
$quote_ids = array_filter($quote_ids, 'is_numeric');
$carts = Mage::getModel('sales/quote')
->getCollection();
var_dump('All Cart Count:');
var_dump(count($carts));
$carts = Mage::getModel('sales/quote')
->getCollection()
->addFieldToFilter('entity_id',array('nin'=>$quote_ids));
var_dump('Filtered Cart Count:');
var_dump(count($carts));
foreach($carts as $cart)
{
var_dump('abandoned cart', $cart);
}
至于您的其他问题,它们太复杂了,无法进入单个堆栈溢出问题。我阅读了Magento 以了解基本架构,然后使用实时Commerce Bug演示来确定您要使用的控制器。(上面链接的两个项目都是我的,自我链接,买家小心等)