2

在 Magento 中,废弃的购物车仅适用于经过验证的注册用户。有没有办法以编程方式为来宾和未经确认的用户捕获它?

还有一种方法可以通过电子邮件发送警报吗?

请告诉我至少应该从哪里开始。我在一个论坛上发现,使用下面的 SQL 可以获取所有废弃的购物车,但我发现其中一些也从那里丢失了。

SELECT entity_id, customer_firstname, customer_email, items_count, grand_total, created_at
FROM sales_flat_quote
WHERE entity_id NOT IN (SELECT quote_item_id AS quote_id FROM sales_flat_order_item) 
AND items_count >0
AND customer_email IS NOT NULL
ORDER BY `sales_flat_quote`.`created_at` DESC
4

3 回答 3

2

我使用第三方系统来做这样的事情。它们成本高,但可能是一种有价值的工具,特别是如果您有冲动购买物品。由于用户没有在网站上登录,Magento 只能使用他们的会话将他们的购物篮存储为报价,因此除了内容之外,您无法获得有关客户或废弃购物车的任何详细信息。

如果您只对添加到人们废弃的篮子中的项目感兴趣,您可以创建自定义 SQL,查看您在示例中确定的两个表。Magento 为每个购物车创建一个报价,当客户购买时,该报价将转换为订单,因此 sales_quotes 表是您需要开始的地方。

关于第三方服务,它们通常涉及在站点上的文本框(例如电子邮件文本框、姓名等)上设置侦听器,这些侦听器在修改字段时使用 ajax 发布数据。如果您启用了它并且客户未能完成购买,则非常适合在客人结帐期间捕获数据。他们对添加到购物车按钮执行相同的操作,并在使用网站时开始建立客户和购物车中物品的自定义配置文件。

当有人向您订购时,您会调用另一个 ajax 请求,该请求会告诉第三方客户已购买,而那些没有收到此最终请求的第三方将其归类为废弃的购物车。这些系统中的大多数将在您可以定义的设定时间和日期后向客户发送电子邮件,并且您通常可以在不同的时间段发送许多电子邮件。您通常还可以查看所有已收集的废弃购物车和客户数据。

Magento 内置的废弃推车可以用于基本用途,但我不会依赖它。AFAIK 它无法触发废弃购物车的电子邮件。如上所述的电子邮件重定向可以非常有效地重新捕获放弃的销售。

看看像exacttarget这样的人或搜索magento email废弃的购物车模块,因为我相信周围有一些可以即插即用的magento。

于 2012-11-27T21:33:49.160 回答
2

我遇到了同样的问题,并且能够通过以下方法将其解决到 magento 1.9.2 中:

步骤1:

从app/code/core/Mage/Reports/Model/Resource/Quote/复制Collection.php文件

应用程序/代码/本地/法师/报告/模型/资源/报价/

第2步:

从第 194 行替换以下代码

$customerName = $adapter->getConcatSql(array('cust_fname.value', 'cust_mname.value', 'cust_lname.value',), ' ');
    $this->getSelect()
        ->joinInner(
            array('cust_email' => $attrEmailTableName),
            'cust_email.entity_id = main_table.customer_id',
            array('email' => 'cust_email.email')
        )
        ->joinInner(
            array('cust_fname' => $attrFirstnameTableName),
            implode(' AND ', array(
                'cust_fname.entity_id = main_table.customer_id',
                $adapter->quoteInto('cust_fname.attribute_id = ?', (int) $attrFirstnameId),
            )),
            array('firstname' => 'cust_fname.value')
        )
        ->joinInner(
            array('cust_mname' => $attrMiddlenameTableName),
            implode(' AND ', array(
                'cust_mname.entity_id = main_table.customer_id',
                $adapter->quoteInto('cust_mname.attribute_id = ?', (int) $attrMiddlenameId),
            )),
            array('middlename' => 'cust_mname.value')
        )
        ->joinInner(
            array('cust_lname' => $attrLastnameTableName),
            implode(' AND ', array(
                'cust_lname.entity_id = main_table.customer_id',
                 $adapter->quoteInto('cust_lname.attribute_id = ?', (int) $attrLastnameId)
            )),
            array(
                'lastname'      => 'cust_lname.value',
                'customer_name' => $customerName
            )
        );

    $this->_joinedFields['customer_name'] = $customerName;
    $this->_joinedFields['email']         = 'cust_email.email';

        $customerName = $adapter->getConcatSql(array('main_table.customer_firstname', 'main_table.customer_middlename', 'main_table.customer_lastname',), ' ');
    $this->getSelect()
            ->columns(
                     array(
                         'email' => new Zend_Db_Expr('main_table.customer_email'), 
                         'firstname'  => new Zend_Db_Expr('main_table.customer_firstname'),
                         'middlename' => new Zend_Db_Expr('main_table.customer_middlename'),
                         'lastname'   => new Zend_Db_Expr('main_table.customer_lastname'),
                         'customer_name' => $customerName
                        )
            )
            ->where('main_table.customer_email IS NOT NULL');


    $this->_joinedFields['customer_name'] = $customerName;
    $this->_joinedFields['email']         = 'main_table.customer_email';
于 2016-08-28T20:34:46.737 回答
0

如果您知道报价 ID,您可以为客人加载购物车。试试下面的代码:

$quote = Mage::getModel('sales/quote')->loadByIdWithoutStore($quoteId);
if ($quote) {
                      Mage::getSingleton('checkout/session')->setQuoteId($quoteId);
                    Mage::getSingleton('checkout/cart')->setQuote($quote);                      
}
于 2014-06-11T07:43:08.353 回答