Тема: Скрытый выбор способа доставки

Добрый день,
Суть моего вопроса в следующем: использую плагин "оформление заказа на одной странице", на сайте есть 3 вида доставки - Самовывоз, Платная доставка (при сумме заказа до 399р), Бесплатная доставка (при сумме заказа выше 400р).
Сделано всё стандартными средствами и всё работает.
Задача в том чтоб скрыть от пользователя пункт с выбором доставки т.к. в каждом конкретном случае способ доставки только один.
Первый вариант
https://s8.hostingkartinok.com/uploads/images/2017/08/e423b6db578f05388c051badb382c7eb.png
Второй
https://s8.hostingkartinok.com/uploads/images/2017/08/19f2fa639953673768367077a777bc9b.png
Третий выкладывать не стал, но думаю понятно.

Попробовал у способа доставки поставить атрибут checked по умолчанию чтоб способ доставки был выбран всегда и блок можно было скрыть, но стоимость доставки считается не верно. Как правильно сделать задуманное не понимаю.

Повысить оценку Понизить оценку

Re: Скрытый выбор способа доставки

Дайте код, который пытались применить.

3

Re: Скрытый выбор способа доставки

Я не очень силен в программировании
в файле /templates/***/moduleview/onepageorder/templates/flatlines/checkout/deliveryblock.tpl
в 11 строке прописал checked="" чтоб радиокнопка была всегда активна и хотел для блока сделать display="none"

<div class="radio-column">
                        <input type="radio" name="delivery" value="{$item.id}" id="dlv_{$item.id}" {if $order.delivery==$item.id}checked{/if} {if $something_wrong}disabled="disabled"{/if}>
                    </div>

Но если так сделать, то всегда получается выбран первый отображаемый способ доставки.

Повысить оценку Понизить оценку

Re: Скрытый выбор способа доставки

Вам надо сделать по другому у Вас стоит условие

{if $order.delivery==$item.id}checked{/if}

А вам надо поставить так:

{if $order.delivery==$item.id || count($delivery_list)==1}checked{/if}

В этом случае Ваша доставка будет выбрана всегда когда она одна. Т.е. блок можно будет скрыть. добавив простой style="display:none" к блоку

5

Re: Скрытый выбор способа доставки

Попробовал - работает, но примерно так же как и мой вариант.
т.е. первый способ оплаты "самовывоз" активен т.к. активен адрес "заберу сам", но если выбрать "доставка по адресу", то способ доставки уже не активен, радиокнопка не нажата.

Повысить оценку Понизить оценку

Re: Скрытый выбор способа доставки

Вы точно мой код пробовали?

7

Re: Скрытый выбор способа доставки

да, сейчас вот так

<input type="radio" name="delivery" value="{$item.id}" id="dlv_{$item.id}" {if $order.delivery==$item.id || count($delivery_list)==1}checked{/if} {if $something_wrong}disabled="disabled"{/if}>

Повысить оценку Понизить оценку

Re: Скрытый выбор способа доставки

Дайте пожалуйста, ссылку на Ваш сайт и полный код шаблона.

9

Re: Скрытый выбор способа доставки

Буду безмерно благодарен, если нужно могу немного заплатить.

https://sushiexpress76.ru/

вот нетронутый файл deliveryblock.tpl

<div class="t-order_method-of-payment onePageDeliveryBlock">
    <h3 class="h3">{t}Выбор способа доставки{/t}</h3>
    <input type="hidden" name="delivery" value="0">

    <div class="order-list-items">
        {foreach $delivery_list as $item}
            {if $item.class != 'myself' || $order.only_pickup_points == 1}
                {$something_wrong=$item->getTypeObject()->somethingWrong($order)}
                <div class="item">
                    <div class="radio-column">
                        <input type="radio" name="delivery" value="{$item.id}" id="dlv_{$item.id}" {if $order.delivery==$item.id}checked{/if} {if $something_wrong}disabled="disabled"{/if}>
                    </div>

                    <div class="info-column">
                        <div class="line">
                            <label class="h3" for="dlv_{$item.id}" class="title">{$item.title}</label>
                            <span class="price">
                                {if !$something_wrong}
                                    <span class="help">{$order->getDeliveryExtraText($item)}</span>
                                    <span class="price-value">{$order->getDeliveryCostText($item)}</span>
                                {/if}
                            </span>
                        </div>

                        <div class="descr">
                            {if $something_wrong}
                                <div class="something-wrong">{$something_wrong}</div>
                            {/if}
                            {if !empty($item.picture)}
                                <img class="logoService" src="{$item.__picture->getUrl(100, 100, 'xy')}" alt="{$item.title}"/>
                            {/if}
                            {$item.description}
                        </div>

                        {if $item.class=='myself' && !empty($warehouses)}
                            <div class="warehouseBlock">
                                <p class="title">{t}Выберите пункт выдачи{/t}:</p>
                                <select name="warehouse" {if $order.delivery!=$item.id}disabled="disabled"{/if}>
                                    {foreach $warehouses as $warehouse}
                                        <option value="{$warehouse.id}" {if $order.warehouse==$warehouse.id}selected="selected"{/if}>{$warehouse.title}</option>
                                    {/foreach}
                                </select>
                            </div>
                        {/if}

                        <div class="additionalInfo">{$item->getAddittionalHtml()}</div>
                    </div>
                </div>
            {/if}
        {/foreach}
    </div>
</div>


{*
<div class="onePageDeliveryBlock">
    <h2>Доставка</h2>
    <input type="hidden" name="delivery" value="0">
    <ul class="vertItems">
        {foreach $delivery_list as $item}
            {if $item.class != 'myself' || $order.only_pickup_points == 1}
                {$something_wrong=$item->getTypeObject()->somethingWrong($order)}
                <li {if $item@first}class="first"{/if}>
                    <div class="radio">
                        <input type="radio" name="delivery" value="{$item.id}" id="dlv_{$item.id}" {if $order.delivery==$item.id}checked{/if} {if $something_wrong}disabled="disabled"{/if}>
                        <span class="back"></span>
                    </div>
                    <div class="info">
                        <div class="line">
                            <span id="scost_{$item.id}" class="price">
                                {if $something_wrong}
                                    <span style="color:red;">{$something_wrong}</span>
                                {else}
                                    <span class="help">{$order->getDeliveryExtraText($item)}</span>
                                    {$order->getDeliveryCostText($item)}
                                {/if}
                            </span>
                            <label for="dlv_{$item.id}" class="title">{$item.title}</label>
                        </div>
                        <p class="descr">
                            {if !empty($item.picture)}
                               <img class="logoService" src="{$item.__picture->getUrl(100, 100, 'xy')}"/>
                            {/if}
                        {$item.description}</p>
                        {* Если выбран самовывоз покажем склады для выбора
                        {if $item.class=='myself' && !empty($warehouses)}
                          <div class="warehouseBlock">
                             <p class="title">Выберите пункт выдачи:</p>
                             <select name="warehouse" {if $order.delivery!=$item.id}disabled="disabled"{/if}>
                                 {foreach $warehouses as $warehouse}
                                    <option value="{$warehouse.id}" {if $order.warehouse==$warehouse.id}selected="selected"{/if}>{$warehouse.title}</option>
                                 {/foreach}
                             </select>
                          </div>
                        {/if}
                        <div class="additionalInfo">{$item->getAddittionalHtml($order)}</div>
                    </div>
                </li>
            {/if}
        {/foreach}
    </ul>
</div>
*}

Повысить оценку Понизить оценку

Re: Скрытый выбор способа доставки

В рамках форума поддержка бесплатная, но и залезть к Вам никто не сможет. Если хотите платно реализовать, то у нас есть сервис helpdesk.readyscript.ru и тендер http://readyscript.ru/partners/tender/.
Судя по тому что я увидел при оформлении заказа, такое чувство, что шаблон вы перегрузили не тот, путь /templates/flatlinesНуилиВашаТема/moduleview/onepageorder/templates/flatlines/checkout/deliveryblock.tpl
правильный.
Но чтобы точно убедится, что он тот, что нужно вам надо что-нибудь там вывести в этом шаблоне, чтобы убедится, что он переписывает шаблон на ваш. Что угодно. Попробуйте и посмотрите, будет ли что-то выводится.

Не забудьте сбросить кэш после правок в шаблоне.

11

Re: Скрытый выбор способа доставки

приведенный Вами путь совпадает с моим из первого сообщения, перед заголовком блока добавил символы и они вывелись на сайте. Файл именно тот который редактирую подцепляется сайтом.
Да и внося изменения которые вы указывали выше они применяются, только работает немного не так...

Повысить оценку Понизить оценку

Re: Скрытый выбор способа доставки

Хорошо. Распишите сценарий. Выбираем это должно быть это. выбираем тот, получаем другое. Просто более подробно.

13 Отредактировано Антон (16.08.2017 16:30:39)

Re: Скрытый выбор способа доставки

У нас сайт производит только локальную доставку в пределах города и соответственно на сайте 3 вида доставки:
Самовывоз
Бесплатная доставка курьером - Это настроено в способах доставки, как доставка с фиксированной стоимостью с максимальной суммой заказа 400р.
Платная доставка курьером стоимостью 150р, если стоимость заказа менее 399р. - Это настроено в способах доставки, как доставка с фиксированной стоимостью 150р с максимальной суммой заказа 399р.

Пользователь при оформлении заказа выбирает сначала "Заберу сам" или вводит адрес для доставки (это логика работы CMS)
В зависимости что пользователь выбрал ему выводятся возможные способы доставки. У нас получается что для каждого случая и каждого клиента способ всегда один.
Т.е. это либо способ доставки самовывозом, а пользователь уже выбрал "Заберу сам" там где указывал адрес (приходится нажимать "самовывоз" второй раз). Либо если введен адрес, то от суммы заказа (больше или меньше 400р) выводится платная или бесплатная доставка курьером.

вот скрин, думаю понятно будет.
http://i92.fastpic.ru/big/2017/0816/36/1e1f06647b9223d75083c68e370aec36.png

Повысить оценку Понизить оценку

Re: Скрытый выбор способа доставки

Ладно попробую по другому объяснить.
Вот мой код он всегда выбирает доставку, если она одна. Вам нужно, чтобы в каком-то момент не надо было чтобы оно выбрано.
Или Вам надо чтобы было выбрано всегда, но при этом блок с доставкой не показывался вообще? Или не показывался только тогда когда бесплатно?

15 Отредактировано Антон (16.08.2017 19:25:10)

Re: Скрытый выбор способа доставки

хочу сделать чтоб пользователю не нужно было повторно нажимать на способ доставки т.к. он всегда один.
т.е. надо чтоб выделялся отображаемый способ оплаты.

чтоб пользователь только выбрал "Заберу сам" или ввел адрес. всё остальное происходило автоматически.
Ваш код у меня выбирает автоматически только "самовывоз", когда переключаюсь на ввод адреса, то способ доставки не выбран...

Повысить оценку Понизить оценку

16 Отредактировано Закусило Александр (17.08.2017 12:05:59)

Re: Скрытый выбор способа доставки

Код мой абсолютно правильный. Примените мой код. И если у Вас результата не получится, то напишите нам в поддержку, мы посмотрим (support@readyscript.ru). Не забудьте приложить доступы.

17 Отредактировано Антон (17.08.2017 12:20:09)

Re: Скрытый выбор способа доставки

А что написать, что не работают нестандартные вещи?
С Вашим кодом обнаружил вот такой глюк:
https://s8.hostingkartinok.com/uploads/images/2017/08/23d2cf5c89966cea5956a540256e252c.png
Адрес "Заберу сам" выбран автоматически, соответственно "Самовывоз" с Вашим кодом выбирается автоматически, а способы оплаты не появляются. Соответственно клиент не может оформить заказ т.к. CMS говорит Выберите способ оплаты... Оставить Ваш код в работе не могу т.к. сайт действующий.
Нажимая на "Доставка по адресу" видим следующее:
https://s8.hostingkartinok.com/uploads/images/2017/08/ac873009067a4b6e5453b9138c7b4d51.png
Способ доставки не выбран, код Ваш работает на первом скрине, а на втором нет. правок в файлах не производил.

Повысить оценку Понизить оценку

18 Отредактировано Закусило Александр (17.08.2017 19:33:55)

Re: Скрытый выбор способа доставки

Просто дайте им ссылку на ветку и приложите доступы. А вообще я всё вспомнил, что у способов доставки же есть флажок выбирать по умолчанию. Вы можете всех доставкам его поставить. По идее поможет

19

Re: Скрытый выбор способа доставки

У способа оплаты есть такой флажок, а у доставки нет. Написать смогу только в понедельник.
Спасибо.

Повысить оценку Понизить оценку

20

Re: Скрытый выбор способа доставки

Александр, добрый день. А как быстро обычно отвечает техподдержка?

Повысить оценку Понизить оценку

Re: Скрытый выбор способа доставки

В зависимости от загруженности. Но обычно укладываются в 2 два дня, если сильная загруженность. Вам ответят в любом случае. Не переживайте.

22

Re: Скрытый выбор способа доставки

Александр, добрый день.
Сложилась подобная ситуация, но предложенный тех.поддержкой способ не работает.
Точнее этим способом радиокнопка подсвечивается, но по факту не срабатывает и не открывает скрытые элементы.

Если из далека, то суть такова: у магазина только один способ доставки - Самовывоз и 14 точек самовывоза.
в админке настроено что Самовывоз способ доставки по умолчанию, но он не выбирается таковым при оформлении заказа.
так же в секции Адрес всегда по умолчанию выбран адрес, а не самовывоз. Готов рассмотреть платную доработку.

Повысить оценку Понизить оценку

Re: Скрытый выбор способа доставки

Хорошо обратитесь в платную поддержку на helpdesk.readyscript.ru. Вам все посчитают