Идём в админку и добавим новый способ доставки "Купить в 1 клик", то же самое добавим в способ оплаты.
Открываем phpMyAdmin и смотрим, под каким id добавились эти записи в таблицах `s_delivery` и `s_payment_methods`. У меня - 9 и 14 соотвественно. Запомним эти значения.
Открываем `product.tpl` в нашем дизайне и добавим весь код где-то под кнопкой добавления в корзину.
Важно!!! Вставлять только после закрывающего тега <form></form>
, иначе получится вложенная форма, которую браузер проигнорирует.
Можно было бы сделать всплывающее окно с помощью Modal от Bootstrap, но в моём шаблоне получилась бы форма, вложенная одна в другую. А Fancybox создает отдельный <div> в самом низу страницы.
{* Кнопка "купить в 1 клик" *}
<a href="#oneClick" class="fn-openform btn btn-success btn-sm">
<i class="fa fa-thumbs-up"></i> купить в 1 клик
</a>
{* Модальное окно *}
<div id="oneClick" style="display: none;">
<form action="/{$lang_link}cart" method="post">
<input type="hidden" name="checkout" value="1">
<input id="oneClickAmount" type="hidden" name="amounts[]" value="1">
{* в value запишем id метода доставки *}
<input type="hidden" name="delivery_id" value="9">
{* в value запишем id метода оплаты *}
<input type="hidden" name="payment_method_id" value="14">
<input type="hidden" name="name" value="OneClick Client">
{* указать email ящик, на который будут уходить подтверждения покупки *}
<input type="hidden" name="email" value="null@null.com">
<input type="hidden" name="address" value="">
<input type="hidden" name="comment" value="">
<h4 class="title">{$product->name|escape|rtrim}</h4>
<div class="input-group">
<input type="tel" class="form-control oneform" name="phone" placeholder="Укажите номер телефона" required>
<span class="input-group-btn">
<button type="submit" name="enter" value="1" class="btn btn-default">Купить!</button>
</span>
</div>
</form>
</div>
{literal}
<script>
$(".fn-openform").fancybox({
helpers : {
overlay : {
locked : false
}
},
closeBtn: false,
fitToView: false,
minHeight: "0",
minWidth: "350",
});
$(".fn-openform").click(function() {
amount = $('form.fn-variants').find('[name=amount]').val();
variant_id = $('form.fn-variants').find('[name=variant]').find(':selected').val();
$('#oneClickAmount').attr('name', 'amounts['+ variant_id +']');
$('#oneClickAmount').val(amount);
});
</script>
{/literal}
Как вы можете видеть, у пользователя не спрашивается email (это многих покупателей отпугивает, как выяснилось). Можно было бы сломать проверку на обязательное поле email при формировании заказа, но я пошел более простым путём - создал на своём домене лишний ящик, и настроил чтобы все входящие письма сразу же удалялись. Ну или можно указать ящик менеджера, который будет обрабатывать заказы. На ваше усмотрение.