Оrder success на отдельной странице

Доброго времени суток!

Подскажите, пожалуйста, как сделать так, чтобы после успешного оформления заказа, на сайте, посетителя перекидывало на определенную страницу, а не на эту же, с чанком tpl.msOrder.success?

Заранее спасибо!
Пашкович Дмитрий
27 декабря 2015, 14:38
modx.pro
6
3 921
0

Комментарии: 6

Максим Кузнецов
27 декабря 2015, 17:40
0
Либо в javascript'e минишопа, либо плагином на событие оформление заказа, либо, например, в чанке tpl.msOrder.success организовывать редирект (сниппетом) на желаемую страницу.
    Максим Кузнецов
    27 декабря 2015, 17:50
    1
    0
    Приведу пример через сниппет (самый удобный вариант):

    Пишем сниппет sendRedirect:
    <?php
    	$id = intval($id);
    	if ($modx->getCount('modResource', array('id' => $id))) {
    		$modx->sendRedirect($modx->makeUrl($id), array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
    	}
    	else {
    		return;
    	}

    И вызываем его в чанке tpl.msOrder.success
    [[!sendRedirect? &id=`айди_страницы`]]
      Пашкович Дмитрий
      27 декабря 2015, 18:06
      0
      Спасибо! Сейчас попробую
        Пашкович Дмитрий
        27 декабря 2015, 18:08
        1
        -1
        Спасибо! Работает!
          Виктор
          05 ноября 2018, 11:43
          0
          Спасибо за решение! Пригодилось)
          Еще вопрос — возможно ли отображать после редиректа таблицу с заказанными товарами?
            Максим Кузнецов
            05 ноября 2018, 13:15
            1
            0
            Конечно:

            1. Добавляете в вызов сниппета sendRedirect еще один параметр, например &order=`айди_заказа`
            2. В коде сниппета sendRedirect обрабатываете его и передаете в функцию редиректа:
            //...
            $order = intval($order);
            //...
            $modx->sendRedirect($modx->makeUrl($id) . '?order=' . $order, array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
            3. Теперь на странице переадресации будет доступен гет-параметр order, который можно передать в свой сниппет, формирующий нужную вам таблицу заказов (msGetOrder).

            Да, если вы не пользуетесь феномом и не знаете, как получить гет-параметр, то нужно создать свой сниппет с примерно таким содержимым:
            <?php
                return $_GET[$param];

            И вызывать на странице следующим образом: [[!snippet_name? &param=`order`]]
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        6