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


Правила Расчёта Стоимости Доставки


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 Barmalei

Barmalei

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 258 сообщений

Отправлено 04 Апрель 2019 - 22:35

Добрый день. Магазин https://g622880.storeland.ru

Подскажите, пожалуйста. Можно ли создать правило расчёта стоимости доставки, исходя из какой-либо характеристики товара? Например, вес товара. Например, если в характеристике товара прописан вес до 3 кг - стоимость доставки по Москве = 300 рублей. Если вес товара более 3 кг, стоимость доставки = 500 рублей. Если вес товара более 10 кг, стоимость доставки = 1000 рублей. И так далее.

Или, может быть, можно каждому товару можно присвоить некий "флаг", например цифра от 1 до 3-х. Если у товара стоит флаг = 1, то доставка = 300 рублей. Если флаг товара = 2, стоимость доставки = 500 рублей. Если флаг товара = 3, стоимость доставки = 1000 рублей. И так далее.

Флаг присваиваем при добавлении товара на сайт.

#2 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 369 сообщений

Отправлено 05 Апрель 2019 - 01:31

Здравствуйте.

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

#3 Barmalei

Barmalei

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 258 сообщений

Отправлено 05 Апрель 2019 - 16:38

Просмотр сообщенияVaccina (05 Апрель 2019 - 01:31) писал:

Здравствуйте.

В этом случае необходимо создать в разделе Настройки - Доставка виды доставки под каждое условие и по умолчанию его выбирать через скрипт, иные способы скрывать.
Так, звучит многообещающе, а как это сделать?)

#4 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 369 сообщений

Отправлено 06 Апрель 2019 - 03:12

Здравствуйте.

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

#5 Barmalei

Barmalei

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 258 сообщений

Отправлено 08 Апрель 2019 - 22:55

Посмотрите, пожалуйста. Я добавил несколько товаров и добавил им характеристики "Вес" и "LC" (логистическая характеристика). Для удобства, присвоил этим характеристикам одинаковые значения. Чем выше вес или логистическая характеристика - тем дороже доставка. Так же, добавил зоны доставки в зависимости от суммы заказа - соответственно, нужно поставить стоимость доставки в зависимость от значения логистической характеристики или веса. Лучше работать с логистической характеристикой.. Я всё правильно сделал, Вы так просили?)

Все товары с прописанными характеристиками находятся в разделе https://trendibrend....alog/Vse-tovary

#6 Barmalei

Barmalei

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 258 сообщений

Отправлено 18 Апрель 2019 - 10:59

Ответьте, пожалуйста.

#7 Barmalei

Barmalei

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 258 сообщений

Отправлено 22 Апрель 2019 - 09:27

Ответьте, пожалуйста. Уже третья неделя пошла с вашего последнего ответа...

#8 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 369 сообщений

Отправлено 25 Май 2019 - 04:51

Здравствуйте.

Зайдите в раздел Сайт - Редактор шаблонов - Корзина - найдите:
				<td class="goodsNameInCart name">
				  <a href="{cart_items.GOODS_URL}" class="cartFormTbodyHeader">
					{cart_items.GOODS_NAME}
					<!-- Если у товара есть отличительные свойства для модификации товара, допишем их к названию товара -->
					{% IFNOT cart_items.distinctive_properties_empty %}<div>({% FOR distinctive_properties %}{cart_items.distinctive_properties.NAME}: {cart_items.distinctive_properties.VALUE}{% IFNOT cart_items.distinctive_properties.last %}, {% ENDIF %}{% ENDFOR %})</div>{% ENDIF %}
				  </a>


после него вставьте:
<div class="del_char">
 {% FOR goods_attr_list %}
  {% IF cart_items.goods_attr_list.NAME=LC %}<span class="lc">{cart_items.goods_attr_list.VALUE}</span>
  {% ELSEIF cart_items.goods_attr_list.NAME=Вес %}<span class="size">{cart_items.goods_attr_list.VALUE}</span>{% ENDIF %}
 {% ENDFOR %}
</div>

далее зайдите в main.css - найдите:
.cartTable tbody td.name a {display: block;font-size: 16px;line-height: 1.3;margin-bottom: 10px;}
.cartTable tbody td.name div {font-size: 12px;margin-bottom: 3px;}

после него вставьте:
.cartTable tbody td.name .del_char {display: none;}

далее зайдите в main.js - найдите:
// Скрипты для Быстрого заказа
function quickOrderScripts(){
$(document).ready(function(){

после него вставьте:
  $('.deliveryZoneRadio, .deliveryZoneRadio + label').hide();
  $('.cartForm .cartTable tbody tr').each(function(){
	var lc = $(this).find('.del_char .lc').text();
	var size = $(this).find('.del_char .size').text();
	var new_lc = parseFloat(lc.replace(",", "."));
	var new_size = parseFloat(size.replace(",", "."));
	if (new_lc == 1 && new_size < 4) {
	  $('.deliveryZoneRadio[value*=\'91592\'], .deliveryZoneRadio[value*=\'91592\'] + label').show();
	} else if (new_lc == 2 && new_size > 3 && new_size < 10) {
	  $('.deliveryZoneRadio[value*=\'91593\'], .deliveryZoneRadio[value*=\'91593\'] + label').show();			   
	} else if (new_lc == 3 && new_size > 10) {
	  $('.deliveryZoneRadio[value*=\'91594\'], .deliveryZoneRadio[value*=\'91594\'] + label').show();			   
	}
  });


#9 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 369 сообщений

Отправлено 15 Июнь 2019 - 08:20

Здравствуйте.

Под новые условия немного необходимо изменить инструкцию, в шаблоне Корзина вместо:
			<div class="TotalSum">
			  <span class="price">
				{% FOR cart_sum %}
				  {cart_sum.NOW_WITH_DELIVERY_AND_DISCOUNT | money_format}
				{% ENDFOR %}
			  </span>
			</div>

прописать:
			<div class="TotalSum">
			  <span class="price">
				{% FOR cart_sum %}
				  {cart_sum.NOW_WITH_DELIVERY_AND_DISCOUNT | money_format}
				{% ENDFOR %}
			  </span>
			</div>
			<div class="count_in_cart">
			  {% FOR cart_count %}{cart_count.COUNT}{% ENDFOR %}
			</div>

в main.css вместо:
.cartTable tbody td.name .del_char {display: none;}

прописать:
.cartTable tbody td.name .del_char, .cartTable .count_in_cart {display: none;}

в main.js вместо:
  $('.deliveryZoneRadio, .deliveryZoneRadio + label').hide();
  $('.cartForm .cartTable tbody tr').each(function(){
		var lc = $(this).find('.del_char .lc').text();
		var size = $(this).find('.del_char .size').text();
		var new_lc = parseFloat(lc.replace(",", "."));
		var new_size = parseFloat(size.replace(",", "."));
		if (new_lc == 1 && new_size < 4) {
		  $('.deliveryZoneRadio[value*=\'91592\'], .deliveryZoneRadio[value*=\'91592\'] + label').show();
		} else if (new_lc == 2 && new_size > 3 && new_size < 10) {
		  $('.deliveryZoneRadio[value*=\'91593\'], .deliveryZoneRadio[value*=\'91593\'] + label').show();						 
		} else if (new_lc == 3 && new_size > 10) {
		  $('.deliveryZoneRadio[value*=\'91594\'], .deliveryZoneRadio[value*=\'91594\'] + label').show();						 
		}
  });

прописать:
$('.deliveryZoneRadio, .deliveryZoneRadio + label').hide();
var count_goods = $('.count_in_cart').text();
var count = parseFloat(count_goods.replace(",", "."));
if (count > 3) {
	var sum = 0;
	$('.cartForm .cartTable tbody tr').each(function() {
		var lc = $(this).find('.del_char .lc').text();
		var new_lc = parseInt(lc);
		sum += Number($(this).find('.del_char .lc').text());
	});
	if (sum == 1) {
		$('.deliveryZoneRadio[value*=\'91592\'], .deliveryZoneRadio[value*=\'91592\'] + label').show();
	} else if (sum == 2) {
		$('.deliveryZoneRadio[value*=\'91593\'], .deliveryZoneRadio[value*=\'91593\'] + label').show();
	} else if (sum >= 3) {
		$('.deliveryZoneRadio[value*=\'91594\'], .deliveryZoneRadio[value*=\'91594\'] + label').show();
	}
} else {
	$('.cartForm .cartTable tbody tr').each(function() {
		var lc = $(this).find('.del_char .lc').text();
		var size = $(this).find('.del_char .size').text();
		var new_lc = parseFloat(lc.replace(",", "."));
		var new_size = parseFloat(size.replace(",", "."));
		if (new_lc == 1 && new_size < 4) {
			$('.deliveryZoneRadio[value*=\'91592\'], .deliveryZoneRadio[value*=\'91592\'] + label').show();
		} else if (new_lc == 2 && new_size > 3 && new_size < 10) {
			$('.deliveryZoneRadio[value*=\'91593\'], .deliveryZoneRadio[value*=\'91593\'] + label').show();
		} else if (new_lc == 3 && new_size > 10) {
			$('.deliveryZoneRadio[value*=\'91594\'], .deliveryZoneRadio[value*=\'91594\'] + label').show();
		}
	});
}

Вам необходимо чтобы под формулу было создано 3 варианта доставки с разной ценой по вашей формуле и указать их ID(указывается при редактировании доставки в URL) в коде main.js вместо:
- 91592
- 91593
- 91594




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных