В новых версиях оформить покупку может любой пользователь (зарегистрированный и гость). В данной статье мы поговорим о том, как убрать возможность оформления заказа незарегистрированному пользователю. Гость сможет добавить товар в корзину, но не сможет оформить заказ, до тех пор пока не авторизуется или не зарегистрируется.

Решить данную задачу в tpl-шаблонизаторе можно на первый взгляд не очень логичным способом.

Решение данной задачи будет строиться на основе % users auth()%. Как мы знаем, данный макрос выводит информацию об авторизованном пользователе или форму авторизации, в случае, если пользователь не авторизован. Для наших целей, мы создадим еще один шаблон для данного макроса. Шаблоны для макроса хранятся в папке ~\tpls\users\. Для примера назовем этот шаблон basket.tpl.

Суть данного шаблона будет заключаться в том, что если пользователь авторизован, то ему будет отображаться кнопка для оформления заказа, если это будет гость, то ему выведется информационное сообщение или дать ссылку на страницу авторизации.

Для примера наш шаблон будет выглядеть следующим образом:

<?php
$FORMS = Array();
$FORMS['login'] = <<<END
<input type="submit" value="ДЛЯ ОФОРМЛЕНИЯ ЗАКАЗА ТРЕБУЕТСЯ АВТОРИЗОВАТЬСЯ" />
END;
$FORMS['logged'] = <<<END
<form action="% pre_lang%/emarket/purchase/">
<input type="submit" value="Оформить заказ" />
</form>
END;
?>

Теперь нам нужно вставить вызов данного шаблона вместо кнопки оформить заказ в шаблоне карзины. Для этого перейдем в шаблон корзины в файле ~\tpls\emarket\default.tpl, и заменим:

<form action="% pre_lang%/emarket/purchase/">
<input type="submit" value="Оформить заказ" />
</form>

на вызов нашего шаблона

% users auth('basket')%

Теперь блок $FORMS['order_block'] = <<<END должен выглядеть следующим образом:
$FORMS['order_block'] = <<<END
<h3>Информация о покупателе</h3>
<p>% emarket getCustomerInfo()%</p>
<h3>Список покупок</h3>
<table width="100%" rules="rows" cellspacing="0" cellpadding="0" border="0" id="order_block">
<thead>
<tr class="orow_hat">
<th>#</th>
<th>Наименования</th>
<th>Опции</th>
<th>Q</th>
<th>Цена</th>
<th>Сумма</th>
<th>Скидки</th>
<th>&nbsp;</th>
</tr>
</thead>
<tbody>
% items%
</tbody>
</table>
<div class="basket_remove_all">
<a href="/emarket/basket/remove_all/">Очистить корзину</a>
</div>
<h3>Скидка на заказ</h3>
% emarket discountInfo(% discount_id%)%
<h3>Доставка</h3>
% delivery-price%
<h3>Сумма</h3>
% total-price%
<p>Товаров в корзине: % total-amount%</p>
% users auth('basket')%
END;

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

Данный способ хорошо подойдёт для интернет-магазинов автозапчасти для Фиат, которые хотят удержать посетителя на сайте или тем, которые предоставляют зарегистрированным пользователям скидки на товары.

Голосовать за статью:

Комментарии

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

Заголовок:
Ваш ник:
Ваш e-mail:
Текст:
Введите текст на картинке

Похожие новости:

Если у Вас возникают какие-либо вопросы или проблемы, то Вы можете написать в комментариях или воспользоваться формой обратной связи.

При копировании материлов ссылка на источник обязательна!