Денис Друщенко 03 августа 2016 0 8
Добрый день!
Смысл в том, чтобы после оформления заказа клиент был перенаправлен в личный кабинет или на главную страницы.
Вопрос в том — как и самое главное где прописать редирект.
Скорее всего это легче сделать средствами 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>    


Но никаких действий не происходит.

8 комментариев
Fi1osof1
Fi1osof 03 августа 2016г в 23:35 #
Можете вот такой код прописать, чтобы человек успел прочитать сообщение, и только через какое-то время его перекинуло:
setTimeout(function(){
  window.location.replace('/');
}, 3000    // Интервал в милисекундах
)
Д
Денис Друщенко 05 августа 2016г в 08:10 #
Не работает. Ни первый, ни второй варианты…
Вообще ничего не происходит.
Д
Денис Друщенко 08 августа 2016г в 11:01 #
Больше комментариев не будет?
Fi1osof1
Fi1osof 08 августа 2016г в 21:57 #
Денис, я забыл, что форма оформления заказа аджаксовая, соответственно никакие такие хитрости на уровне шаблона работать не будут. Это надо в самом JS-е прописывать. Пришлите мне SSH-доступ к серверу, добавлю функцию и пересоберу фронт. Нужен именно SSH, FTP не пойдет.
Д
Денис Друщенко 09 августа 2016г в 14:45 #
Добрый день!
Выслал данные в личку.
Fi1osof1
Fi1osof 12 августа 2016г в 04:21 #
Все, сделал. В common.js дописал

if(action == 'order/submit'){
    setTimeout(function(){
            window.location.replace('/');
        }, 1000    // Интервал в милисекундах
    )
}
Д
Денис Друщенко 12 августа 2016г в 08:11 #
Спасибо! То что надо!
Fi1osof1
Fi1osof 12 августа 2016г в 17:58 #
Не за что!
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.