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


Переименование Доставки В Монтаж

Переименование доставки

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

#1 Mair13

Mair13

    Продвинутый пользователь

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

Отправлено 23 Июнь 2014 - 22:39

Здравствуйте. Я хочу переименовать строку доставка в заказе в монтаж. Кроме того нужно что бы "кол-во" было числом всех товаров с ненулевой старой ценой в корзине (которая уже используется как цена монтажа). "Общая сумма" монтажа должна быть суммой всех старых цен продуктов в корзине.

#2 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 24 Июнь 2014 - 04:23

Не совсем понятно что вы хотите реализовать. Пожалуйста, опишите как можно подробнее. Приведите скриншоты предполагаемых изменений. Как я понимаю речь идет о шаге "Доставка" в момент оформления заказа?

#3 Mair13

Mair13

    Продвинутый пользователь

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

Отправлено 24 Июнь 2014 - 23:02

Просмотр сообщенияСake (24 Июнь 2014 - 04:23) писал:

Не совсем понятно что вы хотите реализовать. Пожалуйста, опишите как можно подробнее. Приведите скриншоты предполагаемых изменений. Как я понимаю речь идет о шаге "Доставка" в момент оформления заказа?
Всё правильно, речь идёт о 4-м шаге заказа: подтверждение заказа. Там есть строчка, которая добавляется всегда: доставка. Я её уже переименовал в "монтаж". Там, как я понял, прописано её(доставки) количество: 1 шт., а мне нужно что бы было количество товаров в корзине с ненулевой "старой ценой". "Старая цена" у меня на сайте уже используется, как цена монтажа. Прикладываю рисунок. Красным комментарии для пояснения.

Прикрепленные изображения

  • Безымянный.jpg


#4 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 25 Июнь 2014 - 02:27

Попробуйте выполнить следующие изменения - в шаблоне "Оформление заказа" найдите код

<!-- Доставка -->
			{% FOR cart_items_delivery %}
			  <tr>
				<td><div class="delivery" title="Доставка {cart_items_delivery.NAME}"></div></td>
				<td>
				  Доставка {cart_items_delivery.NAME}
				  <!-- Если указана зона доставки -->
				  {% IF cart_items_delivery.WITH_DELIVERY_ZONE %}
					<span>({cart_items_delivery.DELIVERY_ZONE_DESC})</span>
				  {% ENDIF %}
				</td>
				<td class="a-center">
				  1 шт
				</td>
				<td>
				  <span class="cart-price">
					<span class="price">{cart_items_delivery.END_PRICE | money_format}</span>		   
				  </span>
				</td>
			  </tr>
			{% ENDFOR %}

и замените его на

<!-- Доставка -->
			{% FOR cart_items_delivery %}
			  <tr>
				<td><div class="delivery" title="Доставка {cart_items_delivery.NAME}"></div></td>
				<td>
				  Доставка {cart_items_delivery.NAME}
				  <!-- Если указана зона доставки -->
				  {% IF cart_items_delivery.WITH_DELIVERY_ZONE %}
					<span>({cart_items_delivery.DELIVERY_ZONE_DESC})</span>
				  {% ENDIF %}
				</td>
				<td class="a-center delivery-out-price">
				  1 шт
				</td>
				<td>
				  <span class="cart-price">
					<span class="price">{cart_items_delivery.END_PRICE | money_format}</span>		   
				  </span>
				</td>
			  </tr>
			{% ENDFOR %}

далее найдите

{% FOR cart_items %}
			  <tr>
				<td><div class="image goods-image-icon-square"><a href="{cart_items.GOODS_URL}"><img class="goods-image-icon" src="{% IF cart_items.GOODS_IMAGE_EMPTY %}{ASSETS_IMAGES_PATH}no-photo-icon.png{% ELSE %}{cart_items.GOODS_IMAGE_ICON}{% ENDIF %}"></a></div></td>
				<td>
					<a href="{cart_items.GOODS_URL}" class="cartFormTbodyHeader">
					  {cart_items.GOODS_NAME}
					  <!-- Если у товара есть отличительные свойства для модификации товара, допишем их к названию товара -->
					  {% IFNOT cart_items.distinctive_properties_empty %}<span>({% FOR distinctive_properties %}{cart_items.distinctive_properties.NAME}: {cart_items.distinctive_properties.VALUE}{% IFNOT cart_items.distinctive_properties.last %}, {% ENDIF %}{% ENDFOR %})</span>{% ENDIF %}
					</a>
				</td>
				<td class="a-center" width="50">
				  {cart_items.ORDER_LINE_QUANTITY} {cart_items.GOODS_MOD_MEASURE_NAME}
				</td>
				<td width="100">
				  <span class="cart-price">
					<span class="price">{cart_items.ORDER_LINE_PRICE_NOW | money_format}</span>		   
				  </span>
				</td>
			  </tr> 
			{% ENDFOR %}

и замените его на

{% FOR cart_items %}
			  <tr>
				<td><div class="image goods-image-icon-square"><a href="{cart_items.GOODS_URL}"><img class="goods-image-icon" src="{% IF cart_items.GOODS_IMAGE_EMPTY %}{ASSETS_IMAGES_PATH}no-photo-icon.png{% ELSE %}{cart_items.GOODS_IMAGE_ICON}{% ENDIF %}"></a></div></td>
				<td>
					<a href="{cart_items.GOODS_URL}" class="cartFormTbodyHeader">
					  {cart_items.GOODS_NAME}
					  <!-- Если у товара есть отличительные свойства для модификации товара, допишем их к названию товара -->
					  {% IFNOT cart_items.distinctive_properties_empty %}<span>({% FOR distinctive_properties %}{cart_items.distinctive_properties.NAME}: {cart_items.distinctive_properties.VALUE}{% IFNOT cart_items.distinctive_properties.last %}, {% ENDIF %}{% ENDFOR %})</span>{% ENDIF %}
					</a>
				</td>
				<td class="a-center quantity" width="50">
				  {cart_items.ORDER_LINE_QUANTITY} {cart_items.GOODS_MOD_MEASURE_NAME}
				</td>
				<td width="100">
				  <span class="cart-price">
					<span class="price" rel="{cart_items.ORDER_LINE_PRICE_OLD}">{cart_items.ORDER_LINE_PRICE_NOW | money_format}</span>
				  </span>
				</td>
			  </tr> 
			{% ENDFOR %}

далее в файл main.js добавьте код

$(function() {
  if($('.delivery-out-price').length) {
	var deliveryCount = 0;
	$('#shopping-cart-table tbody tr').each(function() {
	  if(parseInt($(this).find('.cart-price .price').attr('rel'))) {
		 deliveryCount += parseInt($(this).closest('tr').find('.quantity').text());
	  }
	});
	$('.delivery-out-price').text(deliveryCount + ' шт');
  }
});


#5 Mair13

Mair13

    Продвинутый пользователь

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

Отправлено 25 Июнь 2014 - 20:48

Просмотр сообщенияСake (25 Июнь 2014 - 02:27) писал:

Попробуйте выполнить следующие изменения - в шаблоне "Оформление заказа" найдите код

<!-- Доставка -->
...
Ничего не изменилось. Выкладываю код страницы Оформление заказа:
Скрытый текст


#6 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 26 Июнь 2014 - 00:47

В приведенном вами шаблоне отсутствуют необходимые изменения. Код шаблона должен иметь вид

Скрытый текст

По сути у вас небыл указан класс "delivery-out-price". В файле main.js при этом должен присутствовать код (указанный ранее)

$(function() {
  if($('.delivery-out-price').length) {
		var deliveryCount = 0;
		$('#shopping-cart-table tbody tr').each(function() {
		  if(parseInt($(this).find('.cart-price .price').attr('rel'))) {
				 deliveryCount += parseInt($(this).closest('tr').find('.quantity').text());
		  }
		});
		$('.delivery-out-price').text(deliveryCount + ' шт');
  }
});


#7 Mair13

Mair13

    Продвинутый пользователь

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

Отправлено 26 Июнь 2014 - 09:05

Просмотр сообщенияСake (26 Июнь 2014 - 00:47) писал:

В приведенном вами шаблоне отсутствуют необходимые изменения. Код шаблона должен иметь вид

Скрытый текст

По сути у вас небыл указан класс "delivery-out-price". В файле main.js при этом должен присутствовать код (указанный ранее)

$(function() {
if($('.delivery-out-price').length) {
	 var deliveryCount = 0;
	 $('#shopping-cart-table tbody tr').each(function() {
		 if(parseInt($(this).find('.cart-price .price').attr('rel'))) {
				 deliveryCount += parseInt($(this).closest('tr').find('.quantity').text());
		 }
	 });
	 $('.delivery-out-price').text(deliveryCount + ' шт');
}
});

Извиняюсь, не тот код в прошлом сообщении привёл. Сейчас в страницу оформления заказа полностью скопировал указанный код. В main.js тот класс прописан. Начало считаться количество товаров в корзине, но с учётом товаров, у которых старая цена равна нулю (монтаж посуды). "Общая сумма" монтажа считаться не начала. Сейчас показывает "0", а должна быть сумма всех "старых цен".

#8 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 27 Июнь 2014 - 01:34

Сумма не считается, так как этого еще не реализовано. Для подсчета суммы вам понадобится в файле main.js ранее уже установленный код

$(function() {
if($('.delivery-out-price').length) {
		 var deliveryCount = 0;
		 $('#shopping-cart-table tbody tr').each(function() {
				 if(parseInt($(this).find('.cart-price .price').attr('rel'))) {
								 deliveryCount += parseInt($(this).closest('tr').find('.quantity').text());
				 }
		 });
		 $('.delivery-out-price').text(deliveryCount + ' шт');
}
});

заменить на

$(function() {
if($('.delivery-out-price').length) {
  var deliveryCount = 0;
  var deliveryPrice = 0;
   $('#shopping-cart-table tbody tr').each(function() {
	  var oldPrice = parseFloat($(this).find('.cart-price .price').attr('rel'));
	  if(oldPrice) {
		  deliveryCount += parseInt($(this).closest('tr').find('.quantity').text());
		  deliveryPrice += oldPrice;
	  }
   });
   $('.delivery-out-price').text(deliveryCount + ' шт');
   $('.delivery-out-price').closest('tr').find('.price .num').text(number_format(deliveryPrice, 0, ',', ' '));
}
});

после этого сумма и количество будет подсчитываться.

#9 Mair13

Mair13

    Продвинутый пользователь

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

Отправлено 27 Июнь 2014 - 10:06

Просмотр сообщенияСake (27 Июнь 2014 - 01:34) писал:

Сумма не считается, так как этого еще не реализовано. Для подсчета суммы вам понадобится в файле main.js ранее уже установленный код

$(function() {
if($('.delivery-out-price').length) {
		 var deliveryCount = 0;
		 $('#shopping-cart-table tbody tr').each(function() {
				 if(parseInt($(this).find('.cart-price .price').attr('rel'))) {
								 deliveryCount += parseInt($(this).closest('tr').find('.quantity').text());
				 }
		 });
		 $('.delivery-out-price').text(deliveryCount + ' шт');
}
});

заменить на

$(function() {
if($('.delivery-out-price').length) {
var deliveryCount = 0;
var deliveryPrice = 0;
$('#shopping-cart-table tbody tr').each(function() {
	 var oldPrice = parseFloat($(this).find('.cart-price .price').attr('rel'));
	 if(oldPrice) {
		 deliveryCount += parseInt($(this).closest('tr').find('.quantity').text());
		 deliveryPrice += oldPrice;
	 }
});
$('.delivery-out-price').text(deliveryCount + ' шт');
$('.delivery-out-price').closest('tr').find('.price .num').text(number_format(deliveryPrice, 0, ',', ' '));
}
});

после этого сумма и количество будет подсчитываться.
Появилась сумма в графе монтаж, правда без учёта количества монтируемых товаров т.е. сколько бы шт. не было бы в корзине, сумма будет считаться одного товара каждого вида.

#10 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 28 Июнь 2014 - 03:57

Попробуйте заменить строку

$('.delivery-out-price').closest('tr').find('.price .num').text(number_format(deliveryPrice, 0, ',', ' '));

на

$('.delivery-out-price').closest('tr').find('.price .num').text(number_format(deliveryPrice * deliveryCount, 0, ',', ' '));


#11 Mair13

Mair13

    Продвинутый пользователь

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

Отправлено 28 Июнь 2014 - 12:55

Просмотр сообщенияСake (28 Июнь 2014 - 03:57) писал:

Попробуйте заменить строку

$('.delivery-out-price').closest('tr').find('.price .num').text(number_format(deliveryPrice, 0, ',', ' '));

на

$('.delivery-out-price').closest('tr').find('.price .num').text(number_format(deliveryPrice * deliveryCount, 0, ',', ' '));

не знаю по какой причине, но заработал предыдущий вариант. Видимо я удалил старые товары из корзины и добавил новые и переменные пересчитались. С заменой считалось количество два раза. Теперь стоимость монтажа не считается в общей сумме "Итого:".

#12 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 03 Июль 2014 - 03:10

Найдите в вашем файле main.js строку

$('.delivery-out-price').closest('tr').find('.price .num').text(number_format(deliveryPrice, 0, ',', ' '));

и замените её на

$('.delivery-out-price').closest('tr').find('.price .num').text(number_format(deliveryPrice, 0, ',', ' '));
var total = $('#shopping-cart-table tfoot .price .num');
total.text(number_format(parseFloat(total.text().replace(/\W+/, '')) + deliveryPrice, 0, ',', ' '));


#13 Mair13

Mair13

    Продвинутый пользователь

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

Отправлено 03 Июль 2014 - 20:41

Просмотр сообщенияСake (03 Июль 2014 - 03:10) писал:

Найдите в вашем файле main.js строку

$('.delivery-out-price').closest('tr').find('.price .num').text(number_format(deliveryPrice, 0, ',', ' '));

и замените её на

$('.delivery-out-price').closest('tr').find('.price .num').text(number_format(deliveryPrice, 0, ',', ' '));
var total = $('#shopping-cart-table tfoot .price .num');
total.text(number_format(parseFloat(total.text().replace(/\W+/, '')) + deliveryPrice, 0, ',', ' '));
Не считает более 6 разрядов почему-то.

#14 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 04 Июль 2014 - 04:50

Пожалуйста, опишите проблему подробнее, приведите пример.

#15 Mair13

Mair13

    Продвинутый пользователь

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

Отправлено 06 Июль 2014 - 13:42

Просмотр сообщенияСake (04 Июль 2014 - 04:50) писал:

Пожалуйста, опишите проблему подробнее, приведите пример.
Если в корзине товаров меньше 1 000 000 руб, то "Итого:" считается правильно, если больше, то обрезает до шести цифр.

#16 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 08 Июль 2014 - 03:16

Замените в добавленном вами коде строку

replace(/\W+/, '')

на

replace(/\s+/g, '')


#17 Mair13

Mair13

    Продвинутый пользователь

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

Отправлено 08 Июль 2014 - 16:45

Просмотр сообщенияСake (08 Июль 2014 - 03:16) писал:

Замените в добавленном вами коде строку

replace(/\W+/, '')

на

replace(/\s+/g, '')

Спасибо. Теперь всё отображается верно.
А есть возможность на следующей странице, там где "Ваш заказ успешно оформлен!" так же как и на 4-ом шаге показать цену монтажа(сейчас 0 руб) и так же учесть их в "ИТОГО:"

Прикрепленные изображения

  • Безымянный1.jpg


#18 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 09 Июль 2014 - 03:14

Вы хотите продублировать функциональность и на странице просмотра (уже сформированного заказа)? Если да, то приложите пожалуйста ссылку сформированного (тестового) заказа.

#19 Mair13

Mair13

    Продвинутый пользователь

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

Отправлено 09 Июль 2014 - 09:10

Просмотр сообщенияСake (09 Июль 2014 - 03:14) писал:

Вы хотите продублировать функциональность и на странице просмотра (уже сформированного заказа)? Если да, то приложите пожалуйста ссылку сформированного (тестового) заказа.
ссылка на заказ: http://kamin-msk.com...53f872ba4c0ec/8
На скриншотах "4-й шаг" заказа и следующая страница оформленного заказа. Информация из первого не попадает во второй.

Прикрепленные изображения

  • Безымянный.jpg
  • Безымянный1.jpg


#20 Сake

Сake

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

  • Модератоpы
  • 5 979 сообщений

Отправлено 10 Июль 2014 - 04:07

К сожалению, получается так, что реализовать задуманное на странице просмотра заказа не получится, так как для товаров не доступна информация о старой цене. В результате не получится высчитать сумму монтажа.




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

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