Заметил такую странность при работе с сессионными переменными.
На странице описания товара есть кнопка, по которой можно купить товар или оформить предзаказ, если товара нет в наличии.
Ссылка для добавления товара в корзину формируется так:
Сама ссылка:
Далее в файле /ajax/addto/ajax_backend.php пишу:
Соответственно в файле \public_html\personal\order\make\index.php имеется следующий код,
который, в зависимости от значения переменной, подгружает нужный шаблон:
Теперь оформляю заказ на сайте:
Нажимаю на кнопку "Купить" - товар добавляется в корзину, переменная $_SESSION['OrderStatus'] имеет значение 'order'
(Причем файл /ajax/addto/ajax_backend.php - это единственное место, где переменной $_SESSION['OrderStatus'] присваивается значение).
Но, когда я перехожу на страницу /personal/cart/, значение переменной $_SESSION['OrderStatus'] устанавливается в 'preorder'.
Подскажите, пожалуйста, чем может быть связана эта проблема.
На странице описания товара есть кнопка, по которой можно купить товар или оформить предзаказ, если товара нет в наличии.
Ссылка для добавления товара в корзину формируется так:
Код |
---|
if($PRESENCE == "Есть в наличии" ;) { $addSrc = '/ajax/addto/ajax_backend.php?IBLOCK_ID='.$arResult["IBLOCK_ID"].'&ID='.$arResult["ID"].'&TO=basket'.'&ORDER=order'; } else { $addSrc = '/ajax/addto/ajax_backend.php?IBLOCK_ID='.$arResult["IBLOCK_ID"].'&ID='.$arResult["ID"].'&TO=basket'.'&ORDER=preorder'; } |
Сама ссылка:
Код |
---|
<p><strong><a href="<?=$addSrc?>" id="add<?=$arResult["ID"]?>" class="<?=$addClass?>"><?=$addLetter?></a></strong></p> |
Далее в файле /ajax/addto/ajax_backend.php пишу:
Код |
---|
if (!isset($_SESSION['OrderStatus'])) { if($_REQUEST['ORDER'] == 'preorder') $_SESSION['OrderStatus'] = 'preorder'; elseif($_REQUEST['ORDER'] == 'order') $_SESSION['OrderStatus'] = 'order'; } |
Соответственно в файле \public_html\personal\order\make\index.php имеется следующий код,
который, в зависимости от значения переменной, подгружает нужный шаблон:
Код |
---|
<? if($_SESSION['OrderStatus'] == 'preorder') { $prop1 = array( 0 => "4", 1 => "5", 2 => "6", 3 => "20", 4 => "21", 5 => "22", 6 => "23", 7 => "24", 8 => "25", 9 => "26", 10 => "27", 11 => "28", 12 => "29", 13 => "40", 14 => "41", ); $prop2 = array( 0 => "8", 1 => "9", 2 => "10", 3 => "11", 4 => "15", 5 => "16", 6 => "17", 7 => "18", 8 => "19", 9 => "31", 10 => "32", 11 => "33", 12 => "34", 13 => "35", 14 => "36", 15 => "37", 16 => "38", 17 => "42", ); $templateName = "template3"; echo "Оформление предзаказа"; } else { $prop1 = array(); $prop2 = array(); $templateName = ".default"; echo "Оформление заказа"; } ?> <?$APPLICATION->IncludeComponent("g-top:sale.order.ajax", $templateName, array( "PAY_FROM_ACCOUNT" => "Y", "COUNT_DELIVERY_TAX" => "N", "COUNT_DISCOUNT_4_ALL_QUANTITY" => "N", "ONLY_FULL_PAY_FROM_ACCOUNT" => "N", "ALLOW_AUTO_REGISTER" => "Y", "SEND_NEW_USER_NOTIFY" => "Y", "DELIVERY_NO_AJAX" => "Y", "PROP_1" => $prop1, "PROP_2" => $prop2, "PATH_TO_BASKET" => "/personal/cart/", "PATH_TO_PERSONAL" => "/personal/order/", "PATH_TO_PAYMENT" => "/personal/order/payment/", "PATH_TO_AUTH" => "/auth/", "SET_TITLE" => "Y" ), false );?> |
Теперь оформляю заказ на сайте:
Нажимаю на кнопку "Купить" - товар добавляется в корзину, переменная $_SESSION['OrderStatus'] имеет значение 'order'
(Причем файл /ajax/addto/ajax_backend.php - это единственное место, где переменной $_SESSION['OrderStatus'] присваивается значение).
Но, когда я перехожу на страницу /personal/cart/, значение переменной $_SESSION['OrderStatus'] устанавливается в 'preorder'.
Подскажите, пожалуйста, чем может быть связана эта проблема.