Если сумма товаров в корзине = 0, то запрос( а не заказ) Есть решение

Здравствуйте! Есть товары с запросом цены, сделал для них вместо кнопок "Купить", "Запрос" и вместо цены "0", "По запросу". Вопрос следующий, в каком месте и как по экспериментировать с If и else? Что бы при итоговой сумме товаров равной "0", пользователю предлагалось заполнить только форму со своими данными, исключая формы доставки и оплаты. 

4 ответа

  • 3
    replicant 3 мая 2020 13:22 # Решение

    На самом деле задачу можно решить несколько более креативно, чем доводить до вызова стандартной процедуры и думать ещё потом как отделить данные покупателя от выбора доставки. Решить вопрос надо раньше.

    Можно модифицировать order.html и при выполнении определенного условия выводить человека не на форму расчета доставки и т.п., а отдавать ему обвязку любого из плагинов типа Купить в один клик (их может быть несколько и один из них может исполнять только одну роль отправщика формы запроса), сделав там предварительно нужный набор полей данных и оформив это не как покупку, а как Запрос (вопрос подачи решить средствами плагина, там это все есть).

    Короче задача реализуема за несколько минут. В примере срабатывание идет по условию сумма = 450 рублей. Кусок кода из модифицированного order.html приведен ниже.

    Если у вас оформление заказа не в корзине, то задача решается на шаге checkout.contactinfo.html, переводя покупку в плоскость запроса с отправкой контактных данных.

    Сумма для логики при оформлении в корзине берется примерно так {$_cart_total = $wa->shop->cart->total()}

    {*EMPTY*}
    {if empty($_cart_count)}
        <div class="s-cart-empty-wrapper">
            <div class="s-image-wrapper">
                <img src="{$wa_theme_url}img/cart_empty.svg" alt="[`Your shopping cart is empty.`]">
            </div>
            <p class="s-description">{$config.cart.empty_text|default:"[`Your shopping cart is empty.`]"|escape}</p>
            <p class="s-actions-wrapper">
                <a href="{$wa_app_url}">[`Go to home page`]</a>
            </p>
        </div>
    
    {*ORDER*}
    {else}
        <link rel="stylesheet" href="{$wa_theme_url}order.css">
    
        <div class="s-order-page" id="js-order-page">
            <div class="s-order-column">
    
                <section class="s-order-section" id="js-order-cart">
                    <div class="s-section-header wa-flex-box full-line middle">
                        <a class="s-delete-button js-clear-cart" style="display: inline-block;float: right;white-space: nowrap;margin: 8px 80px 0 0;line-height: 17px;" href="javascript:void(0);">
                            {$_svg_icon = '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 9.9 9.9"><path d="M0,8.5l3.5-3.5L0,1.4L1.4,0l3.5,3.5L8.5,0l1.4,1.4L6.4,4.9l3.5,3.5L8.5,9.9L4.9,6.4L1.4,9.9L0,8.5z"/></svg>'}
                            <span class="s-delete-icon" style="display: inline-block;width: 10px; height: 10px;">{$_svg_icon} Удалить всё</span>
                        </a>
                        <h2 class="s-header">{$config.cart.block_name|default:"[`Shopping cart`]"|escape}</h2>
                    </div>
                    <div class="s-section-body">
                        {$wa->shop->checkout()->cart([
                            "DEBUG" => true,
                            "wrapper" => "#js-order-cart"
                        ])}
                    </div>
                </section>
    
            </div>
            
            {if $_cart_total == 450}
            <p>да, условие выполнено, сумма равна {$_cart_total} руб. <span class="float-right">{shopStorequickorderPlugin::cart_button()}</span></p>
            <br><br>
                {else}
            <p>нет, условие не выполнено, сумма {$_cart_total} не равна 450 рублей, оформляем заказ дальше</p>
            <br><br>
            
            <div class="s-order-column">
                <section class="s-order-section" id="js-order-form">
                    <div class="s-section-header">
                        <h2 class="s-header">{$config.order.block_name|default:"[`Checkout`]"|escape}</h2>
                    </div>
                    <div class="s-section-body">
                        {$wa->shop->checkout()->form([
                            "DEBUG" => true,
                            "wrapper" => "#js-order-form"
                        ])}
                    </div>
                </section>
            </div>
            {/if}

    Ну и дальше 3 ситуационных скриншота

    В случае выполнения условия появляется кнопка оформления формы.



    В случае невыполнения происходит обычная процедура вызова оформления заказа с расчетом доставки в корзине. Если проявите фантазию, то можно встроить модифицированную форму send_email_form (см. блоки) вместо вызова плагина в 1 клик. Однако если вам надо, чтобы данные поступали в общий пул заказов, а не просто валились на почту, то плагин в 1 клик подойдет лучше почтовой формы. Он хотя бы разместит заказ, присвоит номер (клиенту часто важно этот номерок получить) и т.п. Дальше оператор действует по запросу нулевого заказа из пула поступающих и вручную решает вопрос. Вроде бы все логично.
    • +1
      Александр Смит Александр Смит 3 мая 2020 15:12 #

      Что то не хочет работать, что то я упустил. Продолжу пример с "450". При {if $_cart_total == "450"}  исполняется стандартная форма, так же как и при любом числе > 0. А при  {if $_cart_total == 0} применяется плагин "купить в один клик" к любым суммам =>0 в корзине

      • +3
        replicant replicant 3 мая 2020 15:39 #

        В самом начале файла order.html создайте определение для переменной

        {$_cart_total = $wa->shop->cart->total()}

        Её надо объявить, чтобы код ниже с использованием $_cart_total заработал. В остальном там все предельно просто.

        {if сумма > 0}
        выводим кнопку плагина 1 клик
        {else}
        отрисовываем div и кучку кода в которой сидит стандартный js-order-form
        {/if}

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите