Jump to content

Изменение И Способы Доставки По Своим Условиям


Recommended Posts

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

 

Чек бокс делал по аналогии с этим https://simplashop.com/article/simpla-21-dopolnitelnye-chekboksy-v-tovare

 

Только у меня вместо is_new - pickup.

Edited by Asilis
Link to post
Share on other sites

А зачем было добавлять чекбокс? Разве не достаточно добавить способ доставки "За МКАД" и указать в нем цену (наценку)?

Link to post
Share on other sites

А зачем было добавлять чекбокс? Разве не достаточно добавить способ доставки "За МКАД" и указать в нем цену (наценку)?

Это для расширения функционала. Главная задача при присутствии в корзине любого товара с чекбоксом только самовывоз, автоматом скрывалась доставка. Чтобы люди не могли заказать с доставкой то, что только самовывоз. А чекбокс существующий делает в маркете.xml принт самовывоз онли.

Link to post
Share on other sites

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

Link to post
Share on other sites

Не понятно, зачем так мудрить? Два способа доставки человек всё равно не выберет. Если выбрал самовывоз, то в заказе будет только самовывоз. Другого способа доставки всё равно не будет.

P.S. Или у Вас есть товары, для которых доставки нет, а только самовывоз?

Чекбокс у вас в товаре или у клиента добавлен?

Edited by koteyka
Link to post
Share on other sites

Не понятно, зачем так мудрить? Два способа доставки человек всё равно не выберет. Если выбрал самовывоз, то в заказе будет только самовывоз. Другого способа доставки всё равно не будет.

P.S. Или у Вас есть товары, для которых доставки нет, а только самовывоз?

Чекбокс у вас в товаре или у клиента добавлен?

 

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

 

Это для расширения функционала. Главная задача при присутствии в корзине любого товара с чекбоксом только самовывоз, автоматом скрывалась доставка. Чтобы люди не могли заказать с доставкой то, что только самовывоз. А чекбокс существующий делает в маркете.xml принт самовывоз онли.

Link to post
Share on other sites

А если человек выберет один товар с самовывозом, а второй без. Как тогда Вы будете отображать доставку?

Link to post
Share on other sites

Чекбокс (только самовывоз) - у меня в карточке товара кнопка добавлена. Бул тип, тру \ фолсе. Соответственно привязана к товару. В корзину можно вывести с товаром (нашел как свойства выводить, так же можно). Дальше скил не прокачен.



А если человек выберет один товар с самовывозом, а второй без. Как тогда Вы будете отображать доставку?

 

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

=))

Edited by Asilis
Link to post
Share on other sites

В корзине можно делать так (но это при условии, что в корзине будет один товар)

{if !$purchase->ваш_чекбокс}
    Выводим способы доставки
{/if}
Edited by koteyka
Link to post
Share on other sites

Ну так а я о чем?

А если человек выберет один товар с самовывозом, а второй без. Как тогда Вы будете отображать доставку?

Link to post
Share on other sites

Ну так а я о чем?

Так я о том же. Если не один, то ->

 

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

Link to post
Share on other sites

Тогда Вам нужно проверить, есть ли в корзине товар с галкой.

В шаблоне cart.tpl, в цикле

{foreach from=$cart->purchases item=purchase}
    ...............................
{/foreach}

сделайте, например так

{$ok = NULL}
{foreach from=$cart->purchases item=purchase}
    {if $purchase->Ваш_чекбокс}
        {$ok = 1}
    {/if}
    ...............................
{/foreach}

Затем там, где выводятся доставки сделать условие

{if !$ok}
    Выводим доставки
{/if}
Link to post
Share on other sites

У меня в шаблоне cart.tpl нет такого цикла.

{foreach from=$cart->purchases item=purchase}

...............................
{/foreach}

Попробую сам на усмотрение поставить.

Edited by Asilis
Link to post
Share on other sites

 

Тогда Вам нужно проверить, есть ли в корзине товар с галкой.

В шаблоне cart.tpl, в цикле

{foreach from=$cart->purchases item=purchase}
    ...............................
{/foreach}

сделайте, например так

{$ok = NULL}
{foreach from=$cart->purchases item=purchase}
    {if $purchase->Ваш_чекбокс}
        {$ok = 1}
    {/if}
    ...............................
{/foreach}

Затем там, где выводятся доставки сделать условие

{if !$ok}
    Выводим доставки
{/if}

Почти сделал. Сейчас напишу как в общем. Единственное, как это сделать в аякс, добавил позитию, удалилась доставка, убрал позицию (которая только доставка) -> доставка вернулась, без перезагрузки страницы?

Link to post
Share on other sites

В общем вот так ->

 

 

в cart.tpl 

после {if $cart->purchases}

ставим -> 

{$ok = NULL}
{foreach $cart->purchases as $purchase}
   {if $purchase->product->pickup - мой чекбокс в товаре}
        {$ok = 1}
    {/if}
{/foreach}
 
там же ниже 
 
<div id="fn-ajax_deliveries">
 {include file='cart_deliveries.tpl'}
</div>
 
заменяем на ->
 
{if !$ok}
            {* Доставка *}
            <div id="fn-ajax_deliveries">
                {include file='cart_deliveries.tpl'}
            </div>
{else}
{* Самовывоз *}
            <div id="fn-ajax_deliveries">
                {include file='cart_deliveries2.tpl'}
            </div>
{/if}
Все работает. Но статика. Как реализовать аякс?
Edited by Asilis
Link to post
Share on other sites

Все работает. Но статика. Как реализовать аякс?

Писать аякс. Для примера можете взять файл design/Ваш_шаблон/js/ajax_cart.js

 

Link to post
Share on other sites

Писать аякс. Для примера можете взять файл design/Ваш_шаблон/js/ajax_cart.js

 

Лол, но все работает и так))) Там ведь уже есть аякс на добавление и убирание товара, изменение цены в связи с этим. Собственно все норм работает.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...