Изменение цены в зависимости от веса товара — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «'''Актуально для версии 2.9.1''' ==Задача== Необходимо что бы цена товара менялась в зависимост…»)
 
Строка 10: Строка 10:
  
 
Сначала создадим для товара поле для ввода с типом данных '''"Составное"'''. В модуле '''"Шаблоны данных"''', в '''"Типы данных"''' находим '''"Объект каталога"''' или необходимый нам дочерний тип данных который используется для нашего товара. На примере шаблона ''"Современный интернет-магазин"'' мы добавим такое поле к типу данных '''"Телевизоры"''', в группе полей '''"Характеристики"''' мы изменим тип поля '''"Вес"''' на '''"Составное"'''.
 
Сначала создадим для товара поле для ввода с типом данных '''"Составное"'''. В модуле '''"Шаблоны данных"''', в '''"Типы данных"''' находим '''"Объект каталога"''' или необходимый нам дочерний тип данных который используется для нашего товара. На примере шаблона ''"Современный интернет-магазин"'' мы добавим такое поле к типу данных '''"Телевизоры"''', в группе полей '''"Характеристики"''' мы изменим тип поля '''"Вес"''' на '''"Составное"'''.
 +
 +
В папку ''/templates/demodizzy/js/'' добавляем файл price.js где прописываем код:
 +
<source lang="javascript">
 +
$(document).ready(function(){
 +
 +
// find and include price in form table
 +
//price = $('#price_id span#once').text();
 +
price_int = parseInt($('#price_id span#once').text(), 10);
 +
 +
$('form input.table_otions').attr('checked', 'checked');
 +
 +
if (price_int){
 +
price_first = $('form input.table_otions').parent().parent().children('td:last-child').text();
 +
$('form input.table_otions').parent().parent().children('td:last-child').text(price_first + price_int + ' руб');
 +
 +
price_second = parseInt($('form input.table_otions').parent().parent().next().children('td:last-child').text(), 10);
 +
$('form input.table_otions').parent().parent().next().children('td:last-child').text(price_second + price_int + ' руб');
 +
 +
price_third = parseInt($('form input.table_otions').parent().parent().next().next().children('td:last-child').text(), 10);
 +
$('form input.table_otions').parent().parent().next().next().children('td:last-child').text(price_third + price_int + ' руб');
 +
 +
price_four = parseInt($('form input.table_otions').parent().parent().next().next().next().children('td:last-child').text(), 10);
 +
$('form input.table_otions').parent().parent().next().next().next().children('td:last-child').text(price_four + price_int + ' руб');
 +
 +
$('form input[name="options[form_filling]"]').on('click', function(){
 +
//var price = $(this).parent().parent().children('td:last-child').html();
 +
var price_int = parseInt($(this).parent().parent().children('td:last-child').html(), 10);
 +
 +
$('#price_id').html( '<span>' + price_int + ' руб</span>');
 +
});
 +
 +
}else{
 +
//price_actual = $('#price_id span#first').text();
 +
price_actual_int = parseInt($('#price_id span#first').text(), 10);
 +
//price_original = $('#price_id span#second').text();
 +
price_original_int = parseInt($('#price_id span#second').text(), 10);
 +
 +
discount = price_original_int - price_actual_int;
 +
 +
price_first = $('form input.table_otions').parent().parent().children('td:last-child').text();
 +
$('form input.table_otions').parent().parent().children('td:last-child').text(price_first + price_actual_int + ' руб');
 +
 +
price_second = parseInt($('form input.table_otions').parent().parent().next().children('td:last-child').text(), 10);
 +
$('form input.table_otions').parent().parent().next().children('td:last-child').text(price_second + price_actual_int + ' руб');
 +
 +
price_third = parseInt($('form input.table_otions').parent().parent().next().next().children('td:last-child').text(), 10);
 +
$('form input.table_otions').parent().parent().next().next().children('td:last-child').text(price_third + price_actual_int + ' руб');
 +
 +
price_four = parseInt($('form input.table_otions').parent().parent().next().next().next().children('td:last-child').text(), 10);
 +
$('form input.table_otions').parent().parent().next().next().next().children('td:last-child').text(price_four + price_actual_int + ' руб');
 +
 +
$('form input[name="options[form_filling]"]').on('click', function(){
 +
//var price_actual = $(this).parent().parent().children('td:last-child').html();
 +
var price_actual_int = parseInt($(this).parent().parent().children('td:last-child').html(), 10);
 +
var price_original_int = price_actual_int + discount;
 +
 +
$('#price_id').html( '<span>' + price_actual_int + ' руб</span><span style="text-decoration: line-through">' + price_original_int + ' руб</span>');
 +
});
 +
}
 +
});
 +
</source>

Версия 08:14, 2 декабря 2013

Актуально для версии 2.9.1

Задача

Необходимо что бы цена товара менялась в зависимости от выбранного значения веса товара.

Решение

Для реализации данного функционала нам необходимо что бы при вводе определенного значения веса товара цена динамически менялась без перезагрузки страницы.

Сначала создадим для товара поле для ввода с типом данных "Составное". В модуле "Шаблоны данных", в "Типы данных" находим "Объект каталога" или необходимый нам дочерний тип данных который используется для нашего товара. На примере шаблона "Современный интернет-магазин" мы добавим такое поле к типу данных "Телевизоры", в группе полей "Характеристики" мы изменим тип поля "Вес" на "Составное".

В папку /templates/demodizzy/js/ добавляем файл price.js где прописываем код:

$(document).ready(function(){
	
	// find and include price in form table
	//price = $('#price_id span#once').text();
	price_int = parseInt($('#price_id span#once').text(), 10);
	
	$('form input.table_otions').attr('checked', 'checked');
	
	if (price_int){
		price_first = $('form input.table_otions').parent().parent().children('td:last-child').text();
		$('form input.table_otions').parent().parent().children('td:last-child').text(price_first + price_int + ' руб');
		
		price_second = parseInt($('form input.table_otions').parent().parent().next().children('td:last-child').text(), 10);
		$('form input.table_otions').parent().parent().next().children('td:last-child').text(price_second + price_int + ' руб');
	
		price_third = parseInt($('form input.table_otions').parent().parent().next().next().children('td:last-child').text(), 10);
		$('form input.table_otions').parent().parent().next().next().children('td:last-child').text(price_third + price_int + ' руб');
	
		price_four = parseInt($('form input.table_otions').parent().parent().next().next().next().children('td:last-child').text(), 10);
		$('form input.table_otions').parent().parent().next().next().next().children('td:last-child').text(price_four + price_int + ' руб');
		
		$('form input[name="options[form_filling]"]').on('click', function(){
			//var price = $(this).parent().parent().children('td:last-child').html();
			var price_int = parseInt($(this).parent().parent().children('td:last-child').html(), 10);
			
			$('#price_id').html( '<span>' + price_int + ' руб</span>');
		});
		
	}else{
		//price_actual = $('#price_id span#first').text();
		price_actual_int = parseInt($('#price_id span#first').text(), 10);
		//price_original = $('#price_id span#second').text();
		price_original_int = parseInt($('#price_id span#second').text(), 10);
		
		discount = price_original_int - price_actual_int;

		price_first = $('form input.table_otions').parent().parent().children('td:last-child').text();
		$('form input.table_otions').parent().parent().children('td:last-child').text(price_first + price_actual_int + ' руб');
		
		price_second = parseInt($('form input.table_otions').parent().parent().next().children('td:last-child').text(), 10);
		$('form input.table_otions').parent().parent().next().children('td:last-child').text(price_second + price_actual_int + ' руб');
	
		price_third = parseInt($('form input.table_otions').parent().parent().next().next().children('td:last-child').text(), 10);
		$('form input.table_otions').parent().parent().next().next().children('td:last-child').text(price_third + price_actual_int + ' руб');
	
		price_four = parseInt($('form input.table_otions').parent().parent().next().next().next().children('td:last-child').text(), 10);
		$('form input.table_otions').parent().parent().next().next().next().children('td:last-child').text(price_four + price_actual_int + ' руб');
		
		$('form input[name="options[form_filling]"]').on('click', function(){
			//var price_actual = $(this).parent().parent().children('td:last-child').html();
			var price_actual_int = parseInt($(this).parent().parent().children('td:last-child').html(), 10);
			var price_original_int = price_actual_int + discount;
			
			$('#price_id').html( '<span>' + price_actual_int + ' руб</span><span style="text-decoration: line-through">' + price_original_int + ' руб</span>');
		});
	}
});