Asilis Posted January 29, 2017 Report Share Posted January 29, 2017 (edited) Прошу помочь с изменением способов доставки по нужным условиям. Например если добавлю чек бокс для клиента за мкад - доставка меняется на доставку с наценкой. Конкретно сейчас нужно чтобы по моему новому чекбоксу - самовывоз - он убирал доставку вообще при создании заказа. Чек бокс делал по аналогии с этим https://simplashop.com/article/simpla-21-dopolnitelnye-chekboksy-v-tovare Только у меня вместо is_new - pickup. Edited January 29, 2017 by Asilis Quote Link to post Share on other sites
koteyka Posted January 29, 2017 Report Share Posted January 29, 2017 А зачем было добавлять чекбокс? Разве не достаточно добавить способ доставки "За МКАД" и указать в нем цену (наценку)? Quote Link to post Share on other sites
Asilis Posted January 29, 2017 Author Report Share Posted January 29, 2017 А зачем было добавлять чекбокс? Разве не достаточно добавить способ доставки "За МКАД" и указать в нем цену (наценку)?Это для расширения функционала. Главная задача при присутствии в корзине любого товара с чекбоксом только самовывоз, автоматом скрывалась доставка. Чтобы люди не могли заказать с доставкой то, что только самовывоз. А чекбокс существующий делает в маркете.xml принт самовывоз онли. Quote Link to post Share on other sites
Asilis Posted January 29, 2017 Author Report Share Posted January 29, 2017 Ну и соответственно будет высвечиваться сообщение - в заказе присутствуют товары только для самовывоза, доставка невозможна. И стиль товара с чекбоксом самовывоз меняется цветом например на зеленый. Это уж для лучшего исполнения данной доработки. Quote Link to post Share on other sites
koteyka Posted January 29, 2017 Report Share Posted January 29, 2017 (edited) Не понятно, зачем так мудрить? Два способа доставки человек всё равно не выберет. Если выбрал самовывоз, то в заказе будет только самовывоз. Другого способа доставки всё равно не будет.P.S. Или у Вас есть товары, для которых доставки нет, а только самовывоз?Чекбокс у вас в товаре или у клиента добавлен? Edited January 29, 2017 by koteyka Quote Link to post Share on other sites
Asilis Posted January 29, 2017 Author Report Share Posted January 29, 2017 Не понятно, зачем так мудрить? Два способа доставки человек всё равно не выберет. Если выбрал самовывоз, то в заказе будет только самовывоз. Другого способа доставки всё равно не будет.P.S. Или у Вас есть товары, для которых доставки нет, а только самовывоз?Чекбокс у вас в товаре или у клиента добавлен? Ну и соответственно будет высвечиваться сообщение - в заказе присутствуют товары только для самовывоза, доставка невозможна. И стиль товара с чекбоксом самовывоз меняется цветом например на зеленый. Это уж для лучшего исполнения данной доработки. Это для расширения функционала. Главная задача при присутствии в корзине любого товара с чекбоксом только самовывоз, автоматом скрывалась доставка. Чтобы люди не могли заказать с доставкой то, что только самовывоз. А чекбокс существующий делает в маркете.xml принт самовывоз онли. Quote Link to post Share on other sites
koteyka Posted January 29, 2017 Report Share Posted January 29, 2017 А если человек выберет один товар с самовывозом, а второй без. Как тогда Вы будете отображать доставку? Quote Link to post Share on other sites
Asilis Posted January 29, 2017 Author Report Share Posted January 29, 2017 (edited) Чекбокс (только самовывоз) - у меня в карточке товара кнопка добавлена. Бул тип, тру \ фолсе. Соответственно привязана к товару. В корзину можно вывести с товаром (нашел как свойства выводить, так же можно). Дальше скил не прокачен.А если человек выберет один товар с самовывозом, а второй без. Как тогда Вы будете отображать доставку? Ну и соответственно будет высвечиваться сообщение - в заказе присутствуют товары только для самовывоза, доставка невозможна. И стиль товара с чекбоксом самовывоз меняется цветом например на зеленый. Это уж для лучшего исполнения данной доработки. =)) Edited January 29, 2017 by Asilis Quote Link to post Share on other sites
koteyka Posted January 29, 2017 Report Share Posted January 29, 2017 (edited) В корзине можно делать так (но это при условии, что в корзине будет один товар) {if !$purchase->ваш_чекбокс} Выводим способы доставки {/if} Edited January 29, 2017 by koteyka Quote Link to post Share on other sites
Asilis Posted January 29, 2017 Author Report Share Posted January 29, 2017 Затестирую сейчас... Quote Link to post Share on other sites
Asilis Posted January 29, 2017 Author Report Share Posted January 29, 2017 Затестирую сейчас...Стоп, а если не один? Quote Link to post Share on other sites
koteyka Posted January 29, 2017 Report Share Posted January 29, 2017 Ну так а я о чем?А если человек выберет один товар с самовывозом, а второй без. Как тогда Вы будете отображать доставку? Quote Link to post Share on other sites
Asilis Posted January 29, 2017 Author Report Share Posted January 29, 2017 Ну так а я о чем?Так я о том же. Если не один, то -> Ну и соответственно будет высвечиваться сообщение - в заказе присутствуют товары только для самовывоза, доставка невозможна. И стиль товара с чекбоксом самовывоз меняется цветом например на зеленый. Это уж для лучшего исполнения данной доработки. Quote Link to post Share on other sites
Asilis Posted January 29, 2017 Author Report Share Posted January 29, 2017 Кстати, куда тот кусок кода вставлять? В каком файле? А то я не настолько знаток....(( Quote Link to post Share on other sites
koteyka Posted January 29, 2017 Report Share Posted January 29, 2017 Тогда Вам нужно проверить, есть ли в корзине товар с галкой.В шаблоне 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} Quote Link to post Share on other sites
Asilis Posted January 29, 2017 Author Report Share Posted January 29, 2017 (edited) У меня в шаблоне cart.tpl нет такого цикла.{foreach from=$cart->purchases item=purchase}...............................{/foreach}Попробую сам на усмотрение поставить. Edited January 29, 2017 by Asilis Quote Link to post Share on other sites
Asilis Posted January 29, 2017 Author Report Share Posted January 29, 2017 Тогда Вам нужно проверить, есть ли в корзине товар с галкой.В шаблоне 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} Почти сделал. Сейчас напишу как в общем. Единственное, как это сделать в аякс, добавил позитию, удалилась доставка, убрал позицию (которая только доставка) -> доставка вернулась, без перезагрузки страницы? Quote Link to post Share on other sites
koteyka Posted January 30, 2017 Report Share Posted January 30, 2017 Единственное, как это сделать в аяксНаписать аякс для этого. Как же еще? Quote Link to post Share on other sites
Asilis Posted January 30, 2017 Author Report Share Posted January 30, 2017 (edited) В общем вот так -> в 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 January 30, 2017 by Asilis Quote Link to post Share on other sites
koteyka Posted January 30, 2017 Report Share Posted January 30, 2017 Все работает. Но статика. Как реализовать аякс?Писать аякс. Для примера можете взять файл design/Ваш_шаблон/js/ajax_cart.js Quote Link to post Share on other sites
Asilis Posted January 30, 2017 Author Report Share Posted January 30, 2017 Понял, спасибо! Буду учить ajax. Quote Link to post Share on other sites
Asilis Posted January 30, 2017 Author Report Share Posted January 30, 2017 Писать аякс. Для примера можете взять файл design/Ваш_шаблон/js/ajax_cart.js Лол, но все работает и так))) Там ведь уже есть аякс на добавление и убирание товара, изменение цены в связи с этим. Собственно все норм работает. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.