链接到一个页面结帐中的特定步骤

时间:2009-11-11 21:43:26

标签: php zend-framework magento

是否可以将浏览器重定向到单页结帐中的第n步?如果是这样,怎么会去做呢?

我正在处理一个付款模块,并且有一种“取消”操作,我想让用户返回结帐中您选择付款方式的步骤。

我目前将用户返回到结账的第一步,如下所示:

$this->_redirect('checkout/onepage', array('_secure'=>true));

另一个问题是我不能一直工作,在某些浏览器中,我真的不喜欢“有时”命名这类作品。这是已知和/或普遍接受的东西吗?关于此,我几乎没有实际的信息,但我有客户对这种行为的抱怨。他们通常不会给我任何细节,所以这是一个死胡同。

4 个答案:

答案 0 :(得分:7)

结帐/ onepage.phtml:

在PHP中

$step = Mage::app()->getRequest()->getParam('step');
$stepCodes = array('billing', 'shipping', 'shipping_method', 'payment', 'review');

if (($step) && (in_array($step,$stepCodes)) && ($this->getActiveStep() == 'billing')) {
    $checkout = Mage::getSingleton('checkout/type_onepage');
    $checkout->saveBilling(Mage::getSingleton('checkout/session')->getQuote()->getBillingAddress()->toArray(),false);
    $checkout->saveShipping(Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->toArray(),false);
    $checkout->saveShippingMethod(Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getShippingMethod());
    $activestep = Mage::app()->getRequest()->getParam('step');
}
else 
if($this->getActiveStep()) {
    $activestep = $this->getActiveStep();
}

在javascript中

accordion.openSection('opc-<?php /* edit */ echo $activestep; ?>');

答案 1 :(得分:3)

很抱歉不清楚。打开单页结帐页面的模板。 它是app / design / frontend / default / default / template / checkout / onepage.phtml 在文件中添加

<?php 
//if (your cancel condition) 
{ 
echo 
'<script type="text/javascript"> 
checkout.gotoSection(\'checkout-step-review\'); 
</script>'; 
}
?> 

这将使用户完成您需要的步骤。您必须决定用户进入该步骤的条件。

答案 2 :(得分:3)

我想做同样的事情,但无法弄清楚如何在付款步骤中打开单页结帐。

最后,我使用了jQuery和一个ajax调用,所以我可以在更改页面后调用javascript代码:

    jQuery('body').load(failure, {}, function () {
        // set the magento onepage checkout accordion to the payment section
        checkout.gotoSection('payment');
    });

答案 3 :(得分:1)

Rick指的是结帐中的“步骤”不是RESTful,而是Ajaxified步骤,它们都在同一页面上,垂直手风琴实际上只是一组由javascript操纵的分区功能。您需要将javascript设置为正确的步骤,如他所述。