我试图在一步结帐流程中(在开始时,刚刚登录后)引入额外步骤。这是在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.phpinitCheckout()
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);
customMethod()
到checkout.gotoSection('registerkids');
getActiveStep()
更新为return $this->isCustomerLoggedIn() ? 'registerkids' : 'login';
答案 0 :(得分:1)
经过大量调查后,控制初始活动步骤的功能是:
public function getActiveStep()
{
return $this->isCustomerLoggedIn() ? 'yoursection' : 'login';
}
这可以在Mage\Checkout\Block\Onepage.php
中找到,而从onepage.phtml
调用它的函数是$this->getActiveStep()
它不适合我的原因是该文件位于错误的位置。现在工作正常。 希望这有助于某人