一页结账

时间:2014-01-02 17:30:24

标签: magento magento-1.8

我试图在一步结帐流程中(在开始时,刚刚登录后)引入额外步骤。这是在Magento v1.8上,正在销售的商品是虚拟产品类型(因此结帐时应出现的唯一部分是:[新部分],结算,付款和订单审核。

我已经看了很多文章 - this一篇文章最适合我的需求(虽然我认为是为v1.4写的,并且使用了现有页面的重载而不是写作一个新模块)。我也跟着this article一起,但它的目的是介绍一个模块 - 我认为绝对不需要这个模块。 SO文章Magento Adding Step to Onepage Checkout也被引用。

我的问题: 我有一个额外的步骤出现在OPC页面上,但应该扩展活动部分的手风琴是不是。这是因为未设置CSS类active,因为新模块未标记为活动状态,因此未设置此类。{/ p>

我的问题: 我从下面的步骤中错过了什么来确保将新模块设置为ActiveStep?

到目前为止我尝试过的事情: 简而言之,我已经在onepage.phtml上引入了<?php echo $this->getActiveStep(); ?>声明,并且它表明&#39;结算&#39;仍然是活动页面(默认的第一页)。

到目前为止,我已经针对页面排序做了以下更改:

  • 在abstract.php中将新部分(registerkids)添加到_getStepCodes()

    return array('login', 'registerkids', 'billing', 'shipping', 'shipping_method', 'payment', 'review');
    
  • 在Checkout / Block / Onepage / registerkids.php中使用

    创建了一个app / code / local文件
    class Mage_Checkout_Block_Onepage_Registerkids extends Mage_Checkout_Block_Onepage_Abstract
    { 
       protected function _construct()
        {
            $this->getCheckout()->setStepData('registerkids', array(
                'label'     => Mage::helper('checkout')->__('Assign your kids to the booking'),
                'is_show'   => $this->isShow()
            ));
            if ($this->isCustomerLoggedIn()) {
                $this->getCheckout()->setStepData('registerkids', 'allow', true);
    
            }
            parent::_construct();
        }
    }
    
  • 从Checkout \ Block \ Onepage \ billing.php中删除了设置下一步的if ($this->isCustomerLoggedIn())语句

  • 使用

    更新了Checkout \ Model \ Type \ Onepage.php initCheckout()
    if (!($step==='login' || $customerSession->isLoggedIn() && $step==='registerkids')) {
        $checkout->setStepData($step, 'allow', false); // where 'registerkids' used to say 'billing'
    
  • 对opcheckout.js进行了以下更改 -

    • this.steps = ['login', 'registerkids', 'billing', 'shipping', 'shipping_method', 'payment', 'review'];(已添加新内容)
    • this.currentStep = 'registerkids';
    • 已更新setMethod: function(),以便登录后的下一部分为this.gotoSection('registerkids', true);
    • 更新了模板/ persistent / checkout / onepage / login.phtml JS customMethod()checkout.gotoSection('registerkids');
    • 将Checkout / Onepage.php getActiveStep()更新为return $this->isCustomerLoggedIn() ? 'registerkids' : 'login';

1 个答案:

答案 0 :(得分:1)

经过大量调查后,控制初始活动步骤的功能是:

public function getActiveStep()
{
    return $this->isCustomerLoggedIn() ? 'yoursection' : 'login';
}

这可以在Mage\Checkout\Block\Onepage.php中找到,而从onepage.phtml调用它的函数是$this->getActiveStep()

它不适合我的原因是该文件位于错误的位置。现在工作正常。 希望这有助于某人