Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (2)

Лучшие ответы пользователя

Все ответы (2)
  • Как скрыть msorder на странице msGetOrder?

    @Shwaber
    Тоже столкнулся с данной проблемой и не нашел решение на просторах интернета.
    Удалось решить проблему с помощью сниппета.
    $mainPage = $modx->makeUrl(1);
    $resource = $modx->resource;
    $orderPage = $modx->makeUrl($resource->get('id')) . $get;
    switch ($step) {
        case "clear":
            setcookie ("myOrder", "");
            break;
        case "check":
            if(!isset($_COOKIE["myOrder"])){
                setcookie ("myOrder", $value);
                $modx->sendRedirect($orderPage,array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
            }
            if($_COOKIE["myOrder"] != $value){
                $modx->sendRedirect($mainPage,array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
            }
            break;
    }

    Вставил в tpl msOrder (с режимом "clear") и в tpl msGetOrder (с режимом "check").
    &step - режим работы
    &value - что писать в cookie / с чем сравнивать (генерируем маску с использованием данных заказа, например, {$order.id}{$order.num}%{$order.cost})
    &get - GET параметр заказа (?msorder={$order.id})

    Логика работы:
    1. На странице оформления заказа чистим печеньки myOrder.
    2. На странице благодарности проверяем нет ли чего в печеньках. Если печеньки myOrder пусты, то записываем в них наше секретное значение. Если не пусты - сравниваем и либо оставляем пользователя на странице, либо перенаправляем на главную.

    Может решение и костыльное, но самое главное, что работает. Другое в голову пока не пришло.
    Ответ написан
    Комментировать