私はここでたくさん検索し、試み、そして失敗してきました。私が欲しいのは、標準のMagentoチェックアウトであるOnepageチェックアウトのShippingページにチェックボックスを追加することです。
顧客が自分の製品を署名なしで自分の住所に配置したいかどうかを確認できるように、チェックボックスを作成したいと思います。
私はいくつかの古い「同意する」チェックボックスをいじっていますが、運がありません。
誰かが同じようなカスタマイズをしなければならなかったのではないかと期待しています。
私はここでたくさん検索し、試み、そして失敗してきました。私が欲しいのは、標準のMagentoチェックアウトであるOnepageチェックアウトのShippingページにチェックボックスを追加することです。
顧客が自分の製品を署名なしで自分の住所に配置したいかどうかを確認できるように、チェックボックスを作成したいと思います。
私はいくつかの古い「同意する」チェックボックスをいじっていますが、運がありません。
誰かが同じようなカスタマイズをしなければならなかったのではないかと期待しています。
あなたができることは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
これは、他のモジュールまたはカスタムコードが注文オブジェクトのフィールドに何も挿入していないことを前提としています。