Как запретить гостям оформлять заказы (TPL) — различия между версиями
Romario (обсуждение | вклад) |
Romario (обсуждение | вклад) |
||
Строка 79: | Строка 79: | ||
</source> | </source> | ||
После этих действий все незарегистрированные пользователи уже не смогут оформлять заказы, но при этом смогут просматривать каталоги и пользоваться корзиной. | После этих действий все незарегистрированные пользователи уже не смогут оформлять заказы, но при этом смогут просматривать каталоги и пользоваться корзиной. | ||
+ | |||
+ | |||
+ | [[Категория:Модуль Интернет магазин]] |
Текущая версия на 07:30, 17 февраля 2012
Задача: Сделать невозможным оформить заказ незарегистрированным пользователям, но при этом оставить все другие возможности интернет магазина. Гость может смотреть каталог, добавлять товары в корзину, но не может оформить заказ, пока не пройдет авторизацию
Решение: В 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> </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;
После этих действий все незарегистрированные пользователи уже не смогут оформлять заказы, но при этом смогут просматривать каталоги и пользоваться корзиной.