Ссылка на конкретный шаг в одностраничном оформлении заказа - PullRequest
7 голосов
/ 12 ноября 2009

Можно ли перенаправить браузер на n-й шаг при оформлении заказа на одной странице? Если да, то как можно это сделать?

Я работаю над модулем оплаты и выполняю своего рода действие "отменить", которое я хотел бы вернуть пользователю на шаг оформления заказа, где вы выбираете способ оплаты.

В настоящее время я возвращаю пользователя на первый шаг оформления заказа следующим образом:

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

Еще одна проблема, связанная с этим, заключается в том, что я не работаю все время, в некоторых браузерах я действительно не хотел бы называть такие работы "иногда". Это то, что известно и / или принято? У меня очень мало фактической информации по этому поводу, но у меня были жалобы от клиентов об этом поведении. Как правило, они не дают мне никаких подробностей, так что это своего рода тупик.

Ответы [ 4 ]

7 голосов
/ 19 ноября 2009

оформить заказ / 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; ?>');
3 голосов
/ 14 декабря 2012

Я хотел сделать то же самое, но не мог понять, как открыть одностраничную проверку на шаге оплаты.

В конце концов, я использовал jQuery и вызов ajax, чтобы после изменения страницы вызывать код javascript:

    jQuery('body').load(failure, {}, function () {
        // set the magento onepage checkout accordion to the payment section
        checkout.gotoSection('payment');
    });
3 голосов
/ 13 ноября 2009

Извините, что не ясно. Откройте шаблон для одностраничной страницы оформления заказа. Это 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>'; 
}
?> 

Это приведет пользователя к необходимому шагу. Вы должны решить условия, при которых пользователь выводится на шаг.

1 голос
/ 14 ноября 2009

Рик ссылается на тот факт, что «шаги» в оформлении заказа - это не RESTful, а Ajaxified шаги, все они находятся на одной странице, вертикальный аккордеон - это, по сути, просто набор делений, управляемых JavaScript функция. Вам нужно будет установить JavaScript на правильный шаг, как он заявил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...