【问题标题】:Link to a specific step in onepage checkout链接到单页结帐中的特定步骤
【发布时间】:2009-11-11 21:43:25
【问题描述】:

是否可以将浏览器重定向到单页结帐的第 n 步?如果是这样,人们将如何去做?

我正在开发一个支付模块,并且有一种“取消”操作,我想让用户返回到结帐步骤,您可以在其中选择支付方式。

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

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

另一个问题是我不是一直在工作,在某些浏览器中我真的不想将这类作品命名为“有时”。那是已知和/或普遍接受的东西吗?我对此的实际信息很少,但我收到了客户对这种行为的投诉。他们通常不会给我任何细节,所以这是一条死胡同。

【问题讨论】:

    标签: php zend-framework magento


    【解决方案1】:

    结帐/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; ?>');
    

    【讨论】:

    • 考虑到客户已经准备好报价,我确实怀疑加载结帐可以简化。但这是我让它工作的方式。如果有人可以从中改进,请!
    • 嗨@Peter Lindqvist,你找到另一个解决方案了吗?如果不是,您能否解释一下有关此解决方案的更多信息?谢谢!
    【解决方案2】:

    抱歉,不清楚。打开单页结帐页面的模板。 它是 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>'; 
    }
    ?> 
    

    这会将用户带到您需要的步骤。您必须决定将用户带到该步骤的条件。

    【讨论】:

    • 不确定我在那儿跟着你。你能解释一下吗?
    • 您指的是哪个页面,我如何在重定向到结帐页面的控制器中执行此操作?
    • 谢谢,现在我完全明白了!
    • 仅此一项不起作用。我还必须加载不同的步骤并保存数据。
    【解决方案3】:

    我想做同样的事情,但不知道如何在付款步骤打开单页结帐。

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 听起来好像没有“标准化”的方式让用户进入某个步骤。这是一个正确的假设吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多