Авторизация в корзине

Содержание:

  1. Постановка задачи.
  2. Решение.

Проблема Бывает ситуация, когда положил товары в корзину и вдруг вспомнил, что на этом сайте у меня есть профиль с накопительной скидкой, или баллами и хочется авторизоваться с сохранением уже набранной корзины.

Решение Была придумана следующая реализация (рисунок 1):

авторизовать в корзине или нет

рисунок 1

При переключении radiobutton скрываем блок оформления заказа(рисунок 2)

часть формы оформления заказа

рисунок 2

и показываем блок с компонентом авторизации (рисунок 3), поставленный предварительно со свойством display:none.

авторизация в корзине

рисунок 3

Теперь код.
Копируем шаблон компонента Одношаговое оформление заказа (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/

ПоделитьсяShare on Facebook0Share on VKShare on Google+0Tweet about this on TwitterShare on LinkedIn0Pin on Pinterest0

Добавить комментарий