Содержание:
Проблема Бывает ситуация, когда положил товары в корзину и вдруг вспомнил, что на этом сайте у меня есть профиль с накопительной скидкой, или баллами и хочется авторизоваться с сохранением уже набранной корзины.
Решение Была придумана следующая реализация (рисунок 1):
При переключении radiobutton скрываем блок оформления заказа(рисунок 2)
и показываем блок с компонентом авторизации (рисунок 3), поставленный предварительно со свойством display:none.
Теперь код.
Копируем шаблон компонента Одношаговое оформление заказа (bitrix:sale.order.ajax). Открываем файл template.php скопированного шаблона.
Во первых перед данным php кодом (строка 176):
if($_POST["is_ajax_post"] != "Y")
Добавляем 2 блока: Блок с 2 radiobutton, как на рис. 1 следующим кодом:
<?if(!$USER->IsAuthorized()):?> <div id="form_radio" style="margin-bottom:10px"> <input type="radio" id="NEW_PERSON" name="NEW_PERSON" value="1" checked onClick="authorizationOrder();" /> <label for="NEW_PERSON">Новый пользователь</label> <input type="radio" id="HAD_SHOPPING" name="NEW_PERSON" value="2" onClick="authorizationOrder();" /> <label for="NEW_PERSON">Я уже делал(а) покупки</label> <br/> </div> <?endif;?>
Блок авторизации(изначально скрыт, display:none), как на рис. 3 следующим кодом:
<div id="form_auth" style="display: none;"> <?$APPLICATION->IncludeComponent( "bitrix:system.auth.form", "order", Array( "COMPONENT_TEMPLATE" => ".default", "REGISTER_URL" => "/auth/?register=yes", "FORGOT_PASSWORD_URL" => "/auth/?forgot_password=yes", "PROFILE_URL" => "/personal/", "SHOW_ERRORS" => "N" ) );?> </div>
Её размещаем среди остальных js функций этого файла например на строке 111.
На этом всё.
Теперь человек может быстро авторизоваться прямо в корзине.
Пример реализации на сайте http://podarki.reid.ru/
Оставить комментарий