Добрый день! Смысл в том, чтобы после оформления заказа клиент был перенаправлен в личный кабинет или на главную страницы. Вопрос в том — как и самое главное где прописать редирект. Скорее всего это легче сделать средствами JavaScript. Попытался изменить код в обработчике формы «Оформить заказ» в файле accept.tpl: {if $smarty.post.submit}
{*processor action="web/basket/order/submit" ns="basket" params=$smarty.post assign=order_result*}
{processor action="shopmodx/orders/submit" ns="shopmodx" params=$smarty.post assign=order_result}
{if !$order_result.success}
<div class="alert alert-danger">
{$order_result.message|default:"Ошибка выполнения запроса"}
</div>
{if $order_result.field_errors}
<div class="alert alert-info">
{foreach $order_result.field_errors as $n => $err}
<p>{$err}</p>
{/foreach}
</div>
{/if}
{/if}
{* Способ увидеть весь ответ от процессора *}
{*<pre>
{print_r($order_result)}
</pre>*}
< scrip t typ e="text/javascrip t">
window.location = "index.php";
< / scrip t>
{/if} Добавил: < scrip t typ e="text/javascrip t">
window.location = "index.php";
< / scrip t> Но никаких действий не происходит.
Можете вот такой код прописать, чтобы человек успел прочитать сообщение, и только через какое-то время его перекинуло: setTimeout(function(){ window.location.replace('/'); }, 3000 // Интервал в милисекундах )
Не работает. Ни первый, ни второй варианты… Вообще ничего не происходит.
Больше комментариев не будет?
Денис, я забыл, что форма оформления заказа аджаксовая, соответственно никакие такие хитрости на уровне шаблона работать не будут. Это надо в самом JS-е прописывать. Пришлите мне SSH-доступ к серверу, добавлю функцию и пересоберу фронт. Нужен именно SSH, FTP не пойдет.
Добрый день! Выслал данные в личку.
Все, сделал. В common.js дописал if(action == 'order/submit'){ setTimeout(function(){ window.location.replace('/'); }, 1000 // Интервал в милисекундах ) }
Спасибо! То что надо!
Не за что!