1

私はここでたくさん検索し、試み、そして失敗してきました。私が欲しいのは、標準のMagentoチェックアウトであるOnepageチェックアウトのShippingページにチェックボックスを追加することです。

顧客が自分の製品を署名なしで自分の住所に配置したいかどうかを確認できるように、チェックボックスを作成したいと思います。

私はいくつかの古い「同意する」チェックボックスをいじっていますが、運がありません。

誰かが同じようなカスタマイズをしなければならなかったのではないかと期待しています。

4

1 に答える 1

4

あなたができることはcheckout/session、オブザーバーを介して設定を保存することです。まず、配送セクションにチェックボックスを追加し、のプロパティを指定しname=shipping[no_signature]ます。次に、新しいモジュールを作成してイベントにフックし、次のcontroller_action_postdispatch_checkout_onepage_saveShippingコードを使用します。

public function controller_action_postdispatch_checkout_onepage_saveShipping($observer)
{
    $params = (Mage::app()->getRequest()->getParams()) ? Mage::app()->getRequest()->getParams() : array();
    if (isset($params['shipping']['no_signature']) && $params['shipping']['no_signature']) {
        Mage::getSingleton('checkout/session')->setNoSignature(true);
    } else {
        Mage::getSingleton('checkout/session')->setNoSignature(false);
    }

    return $this;
}

次に、注文が行われる直前に、イベントにフックしてsales_order_place_before、次のように注文にコメントを追加できます。

public function sales_order_place_before($observer)
{
    $order = $observer->getOrder();
    if (Mage::getSingleton('checkout/session')->getNoSignature()) {
        $order->setCustomerNote('No signature required.');
    } else {
        $order->setCustomerNote(null);
    }

    return $this;
}

[販売]>[注文]に移動すると、顧客が署名を必要としているかどうかに関する注文に関するコメントが表示されます。customer_noteこれは、他のモジュールまたはカスタムコードが注文オブジェクトのフィールドに何も挿入していないことを前提としています。

于 2013-01-21T22:36:45.953 に答える