Перейти к содержимому


Фото
- - - - -

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

Доставка delivery свои условия

  • Чтобы отвечать, сперва войдите на форум
21 ответов в теме

#1 Asilis

Asilis
  • Пользователь
  • 25 сообщений
  • Заказчик, Пользователь

Опубликовано 29.01.2017 - 12:56

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

 

Чек бокс делал по аналогии с этим https://simplashop.c...kboksy-v-tovare

 

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


Изменено: Asilis, 29.01.2017 - 13:01


#2 koteyka

koteyka

    Фрилансер

  • Пользователь
  • 1 345 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Днепропетровск

Опубликовано 29.01.2017 - 13:52

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



#3 Asilis

Asilis
  • Пользователь
  • 25 сообщений
  • Заказчик, Пользователь

Опубликовано 29.01.2017 - 16:01

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

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



#4 Asilis

Asilis
  • Пользователь
  • 25 сообщений
  • Заказчик, Пользователь

Опубликовано 29.01.2017 - 16:09

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



#5 koteyka

koteyka

    Фрилансер

  • Пользователь
  • 1 345 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Днепропетровск

Опубликовано 29.01.2017 - 16:12

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

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

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


Изменено: koteyka, 29.01.2017 - 16:16


#6 Asilis

Asilis
  • Пользователь
  • 25 сообщений
  • Заказчик, Пользователь

Опубликовано 29.01.2017 - 16:37

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

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

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

 

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

 

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



#7 koteyka

koteyka

    Фрилансер

  • Пользователь
  • 1 345 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Днепропетровск

Опубликовано 29.01.2017 - 16:40

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



#8 Asilis

Asilis
  • Пользователь
  • 25 сообщений
  • Заказчик, Пользователь

Опубликовано 29.01.2017 - 16:42

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



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

 

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

=))


Изменено: Asilis, 29.01.2017 - 16:43


#9 koteyka

koteyka

    Фрилансер

  • Пользователь
  • 1 345 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Днепропетровск

Опубликовано 29.01.2017 - 16:43

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

{if !$purchase->ваш_чекбокс}
    Выводим способы доставки
{/if}

Изменено: koteyka, 29.01.2017 - 16:44


#10 Asilis

Asilis
  • Пользователь
  • 25 сообщений
  • Заказчик, Пользователь

Опубликовано 29.01.2017 - 16:47

Затестирую сейчас...



#11 Asilis

Asilis
  • Пользователь
  • 25 сообщений
  • Заказчик, Пользователь

Опубликовано 29.01.2017 - 16:52

Затестирую сейчас...

Стоп, а если не один?



#12 koteyka

koteyka

    Фрилансер

  • Пользователь
  • 1 345 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Днепропетровск

Опубликовано 29.01.2017 - 16:53

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

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



#13 Asilis

Asilis
  • Пользователь
  • 25 сообщений
  • Заказчик, Пользователь

Опубликовано 29.01.2017 - 17:24

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

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

 

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



#14 Asilis

Asilis
  • Пользователь
  • 25 сообщений
  • Заказчик, Пользователь

Опубликовано 29.01.2017 - 17:28

Кстати, куда тот кусок кода вставлять?

 

В каком файле? А то я не настолько знаток....((



#15 koteyka

koteyka

    Фрилансер

  • Пользователь
  • 1 345 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Днепропетровск

Опубликовано 29.01.2017 - 18:21

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

В шаблоне 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}


#16 Asilis

Asilis
  • Пользователь
  • 25 сообщений
  • Заказчик, Пользователь

Опубликовано 29.01.2017 - 19:08

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

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

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

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


Изменено: Asilis, 29.01.2017 - 19:23


#17 Asilis

Asilis
  • Пользователь
  • 25 сообщений
  • Заказчик, Пользователь

Опубликовано 29.01.2017 - 23:06

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

В шаблоне 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}

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



#18 koteyka

koteyka

    Фрилансер

  • Пользователь
  • 1 345 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Днепропетровск

Опубликовано 30.01.2017 - 08:45

Единственное, как это сделать в аякс

Написать аякс для этого. Как же еще? :)



#19 Asilis

Asilis
  • Пользователь
  • 25 сообщений
  • Заказчик, Пользователь

Опубликовано 30.01.2017 - 10:55

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

 

в 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}
Все работает. Но статика. Как реализовать аякс?

Изменено: Asilis, 30.01.2017 - 10:56


#20 koteyka

koteyka

    Фрилансер

  • Пользователь
  • 1 345 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Днепропетровск

Опубликовано 30.01.2017 - 10:59

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

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







Также с меткой «Доставка, delivery, свои условия»

0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых