我一直在寻找,尝试和失败。我想要的是在Onepage checkout的Shipping页面上添加一个复选框,标准的magento checkout。
我想创建一个复选框,以便客户可以检查它是否希望将他们的产品放在他们的地址上而不签名。
我一直在搞乱一些旧的“接受条款”复选框,但没有运气。
我希望有人可能不得不进行同样的定制。
答案 0 :(得分: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
字段中注入任何内容。