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 はセッションを使用してバスケットを見積もりとしてのみ保存できるため、顧客または放棄されたカートの内容以外の詳細を取得することはできません。

放棄されたバスケットに追加されたアイテムのみに関心がある場合は、例で特定した 2 つのテーブルを参照してカスタム SQL を作成できます。Magento は、顧客が購入したときに注文に変換されるすべてのカートの見積もりを作成するため、sales_quotes はテーブルから開始する必要があります。

サードパーティのサービスに関しては、通常、フィールドが変更されたときに ajax を使用してデータを投稿する電子メール テキスト ボックス、名前など、サイトのテキスト ボックスにリスナーを配置する必要があります。有効にしていて、顧客が購入を確定できなかった場合に、ゲストのチェックアウト中にデータをキャプチャするのに適しています。カートに追加するボタンについても同じことを行い、サイトを使用するときに、顧客とカート内のアイテムのカスタム プロファイルの構築を開始します。

誰かが注文すると、顧客が購入したことをサードパーティに伝える別の ajax リクエストを呼び出します。この最後のリクエストを受け取らなかったものは、放棄されたカートとして分類されます。これらのシステムのほとんどは、定義できる一定の時間と日数の後に顧客に電子メールを送信します。通常、さまざまな期間に多くの電子メールを送信できます。通常、収集されたすべての放棄されたカートと顧客データを表示することもできます。

Magento の組み込みの放棄されたカートは、基本的な使用には問題ありませんが、私はそれに依存しません。私の知る限り、放棄されたカートのメールをトリガーする方法はありません. 上記のような電子メールのリターゲティングは、放棄された売上を再獲得するのに非常に効果的です。

私は、マジェントでプラグアンドプレイするものがいくつかあると信じているので、exacttargetのような誰かを見て、マジェントの電子メール放棄されたカートモジュールを検索してください.

于 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 に答える