我一直在这里寻找、尝试和失败。我想要的是在 Onepage 结帐的运送页面上添加一个复选框,即标准的 magento 结帐。
我想创建一个复选框,以便客户可以检查它是否希望将他们的产品放置在他们的地址上而无需签名。
我一直在搞乱一些旧的“接受条款”复选框,但没有运气。
我希望有人可能不得不进行同样的定制。
我一直在这里寻找、尝试和失败。我想要的是在 Onepage 结帐的运送页面上添加一个复选框,即标准的 magento 结帐。
我想创建一个复选框,以便客户可以检查它是否希望将他们的产品放置在他们的地址上而无需签名。
我一直在搞乱一些旧的“接受条款”复选框,但没有运气。
我希望有人可能不得不进行同样的定制。
你可以做的是checkout/session
通过观察者保存偏好。首先,将复选框添加到 shipping 部分并为其赋予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
订单对象的字段中。