代码之家  ›  专栏  ›  技术社区  ›  Peter Lindqvist

链接到一页签出中的特定步骤

  •  7
  • Peter Lindqvist  · 技术社区  · 15 年前

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

    我正在开发一个支付模块,有一种“取消”操作,我想让用户返回到您选择支付方式的签出步骤。

    我现在将用户返回到签出的第一步,如下所示:

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

    另一个问题是,我不是一直都在工作,在某些浏览器中,我真的不想将这种工作命名为“有时”。这是已知和/或普遍接受的东西吗?关于这一点,我几乎没有实际的信息,但我已经收到了客户关于这一行为的投诉。他们一般不会给我任何细节,所以这是一种死胡同。

    4 回复  |  直到 12 年前
        1
  •  7
  •   Peter Lindqvist    15 年前

    签出/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; ?>');
    
        2
  •  3
  •   Rick J    15 年前

    对不起,我不明白。打开一页签出页的模板。 它是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
  •  3
  •   Thomas Vander Stichele    12 年前

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

    最后,我使用jquery和ajax调用,以便在更改页面后调用javascript代码:

        jQuery('body').load(failure, {}, function () {
            // set the magento onepage checkout accordion to the payment section
            checkout.gotoSection('payment');
        });
    
        4
  •  1
  •   4.669201    15 年前

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