2

checkout/onepage の最後に、契約書の下にチェックボックスを追加したいと思います。現在は条件のみです。

ユーザーがニュースレターに登録できるオプションのチェックボックスを追加したり、製品がプレゼントとして梱包されていることを確認したりします。もちろん、このフィールドはバックエンドにも表示されるので、注文がプレゼントなのか、それともユーザーがニュースレターを望んでいるのかを確認できます。

「プレゼントのチェックボックス」またはニュースレターのやり方を教えてもらえますか?

前もって感謝します!

4

1 に答える 1

4

ニュースレターのオプションについては、以前に次のように説明しました。

フィールドを追加

テンプレート checkout/onepage/agreements.phtml を更新して、新しいチェックボックスを含めます。

checkout_type_onepage_save_order_after を使用する

カスタムモジュールを使用すると、次のようなものを使用します

<events>
    <checkout_type_onepage_save_order_after>
        <observers>
            <your_module>
                <class>your_module/observer</class>
                <method>saveOrderAfter</method>
            </your_module>    
        </observers>
    </checkout_type_onepage_save_order_after>
</events>

オブザーバーで顧客情報を取得する

オブザーバーでは、次の方法でフィールドを取得できます

Mage::app()->getRequest()->getParam('whatever_you_called_your_field', false);

その後、注文の顧客IDまたはメールを取得できます

$observer->getData('order')->getCustomerId();
$observer->getData('order')->getCustomerId();

この時点で、ニュースレター/購読者モデルを読み込んでメールを購読するか、顧客を読み込んで IsSubscribed を true に設定できます。

これは注文に対して属性を保存しませんが、インストール スクリプトで注文属性を作成する場合、オブザーバーを使用して注文に対してこれを設定できますが、sales_order_save_before イベントを使用して注文に対して属性を設定する方が安全かもしれません。 .

$installer->addAttribute(
    'order',
    'your_attribute',
        array(
            'label' => 'Newsletter',
            'type'  => 'int'
        )
);
于 2013-02-20T14:46:33.983 に答える