середу, 8 червня 2016 р.

Как добавить заказ в один клик для интернет-магазина на Okay-CMS (форк Simpla)

Идём в админку и добавим новый способ доставки "Купить в 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 при формировании заказа, но я пошел более простым путём - создал на своём домене лишний ящик, и настроил чтобы все входящие письма сразу же удалялись. Ну или можно указать ящик менеджера, который будет обрабатывать заказы. На ваше усмотрение.

Немає коментарів :

Дописати коментар