Magento将一步结账作为单独的结账流程并保持默认流程

时间:2013-06-26 06:35:34

标签: php magento magento-1.7 checkout

我在magento工作。

我想针对特定类型的订单实施一步结账。除此之外,我想保留magento默认的一页结帐流程。

这可能吗?我曾尝试过Google,但遗憾的是没有取得任何成功。

谢谢, 米兰

1 个答案:

答案 0 :(得分:1)

查看onestepcheckout扩展中的config.xml,您将看到下一个事件:

<controller_action_predispatch_checkout_onepage_index>
  <observers>
    <magenthemes_onestepcheckout_observer>
      <type>singleton</type>
      <class>onestepcheckout/observer</class>
      <method>initController</method>
    </magenthemes_onestepcheckout_observer>
  </observers>
</controller_action_predispatch_checkout_onepage_index>

因此,您需要在app / code / local / Magenthemes / Onestepcheckout / Model / Observer.php中更改函数initController()。这是它:

public function initController($observer) {
    if (Mage::helper('onestepcheckout')->isActive()) {
         $observer->getControllerAction()->_redirect('onestepcheckout');
    }
}

此功能只是检查扩展是否已启用,并从checkout / onepage重定向到onestepcheckot。你可以使用这样的东西:

public function initController($observer) {
    $event = $observer->getEvent();
    $order = $event->getOrder();
    $use_onestep = true;// do some checks here using $order and set result (true|false)
    if (Mage::helper('onestepcheckout')->isActive() && $use_onestep) {
        $observer->getControllerAction()->_redirect('onestepcheckout');
    }
}

结果,默认情况下,进程将转到checkout / onepage并在需要时重定向到onestep checkout。