Как запретить гостям оформлять заказы (TPL) — различия между версиями
Romario (обсуждение | вклад) (Новая страница: «Задача: Сделать невозможным оформить заказ незарегистрированным пользователям, но при эт…») |
Romario (обсуждение | вклад) |
||
Строка 9: | Строка 9: | ||
Для примера наш шаблон будет выглядеть следующим образом: | Для примера наш шаблон будет выглядеть следующим образом: | ||
− | + | <source lang="php"> | |
<?php | <?php | ||
$FORMS = Array(); | $FORMS = Array(); | ||
Строка 25: | Строка 25: | ||
END; | END; | ||
?> | ?> | ||
− | + | </source> | |
Теперь нам нужно вставить вызов данного шаблона вместо кнопки оформить заказ в шаблоне карзины. | Теперь нам нужно вставить вызов данного шаблона вместо кнопки оформить заказ в шаблоне карзины. | ||
Для этого перейдем в шаблон корзины в файле ~\tpls\emarket\default.tpl, и заменим: | Для этого перейдем в шаблон корзины в файле ~\tpls\emarket\default.tpl, и заменим: | ||
− | + | <source lang="php"> | |
<form action="%pre_lang%/emarket/purchase/"> | <form action="%pre_lang%/emarket/purchase/"> | ||
<input type="submit" value="Оформить заказ" /> | <input type="submit" value="Оформить заказ" /> | ||
</form> | </form> | ||
− | + | </source> | |
на вызов нашего шаблона | на вызов нашего шаблона | ||
− | + | <source lang="php"> | |
%users auth('basket')% | %users auth('basket')% | ||
− | + | </source> | |
Теперь блок $FORMS['order_block'] = <<<END должен выглядеть следующим образом: | Теперь блок $FORMS['order_block'] = <<<END должен выглядеть следующим образом: | ||
− | + | <source lang="php"> | |
$FORMS['order_block'] = <<<END | $FORMS['order_block'] = <<<END | ||
<h3>Информация о покупателе</h3> | <h3>Информация о покупателе</h3> | ||
Строка 82: | Строка 82: | ||
END; | END; | ||
− | + | </source> | |
После этих действий все незарегистрированные пользователи уже не смогут оформлять заказы, но при этом смогут просматривать каталоги и пользоваться корзиной. | После этих действий все незарегистрированные пользователи уже не смогут оформлять заказы, но при этом смогут просматривать каталоги и пользоваться корзиной. |
Версия 07:25, 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')%
<!-- <form action="%pre_lang%/emarket/purchase/">
<input type="submit" value="Оформить заказ" />
</form> -->
END;
После этих действий все незарегистрированные пользователи уже не смогут оформлять заказы, но при этом смогут просматривать каталоги и пользоваться корзиной.