Изменение цены в зависимости от веса товара — различия между версиями
(→Решение) |
|||
Строка 11: | Строка 11: | ||
Сначала создадим для товара поле для ввода с типом данных '''"Составное"'''. В модуле '''"Шаблоны данных"''', в '''"Типы данных"''' находим '''"Объект каталога"''' или необходимый нам дочерний тип данных который используется для нашего товара. На примере шаблона ''"Современный интернет-магазин"'' мы добавим такое поле к типу данных '''"Телевизоры"''', в группе полей '''"Характеристики"''' мы изменим тип поля '''"Вес"''' на '''"Составное"'''. | Сначала создадим для товара поле для ввода с типом данных '''"Составное"'''. В модуле '''"Шаблоны данных"''', в '''"Типы данных"''' находим '''"Объект каталога"''' или необходимый нам дочерний тип данных который используется для нашего товара. На примере шаблона ''"Современный интернет-магазин"'' мы добавим такое поле к типу данных '''"Телевизоры"''', в группе полей '''"Характеристики"''' мы изменим тип поля '''"Вес"''' на '''"Составное"'''. | ||
− | + | Заходим в карточку товара и проставляем например 10 значений для поля '''"Вес"'''. | |
+ | |||
+ | Далее в папку ''/templates/demodizzy/js/'' добавляем файл price.js где прописываем код: | ||
<source lang="javascript"> | <source lang="javascript"> | ||
$(document).ready(function(){ | $(document).ready(function(){ | ||
Строка 70: | Строка 72: | ||
} | } | ||
}); | }); | ||
+ | </source> | ||
+ | |||
+ | Теперь необходимо подключить этот файл к главному шаблону вывода страниц ''/templates/demodizzy/xslt/layouts/default.xsl'' | ||
+ | <source lang="xml"> | ||
+ | <head> | ||
+ | ... | ||
+ | <script type="text/javascript" charset="utf-8" src="/templates/demodizzy/js/price.js"></script> | ||
+ | ... | ||
+ | </head> | ||
</source> | </source> |
Версия 08:18, 2 декабря 2013
Актуально для версии 2.9.1
Задача
Необходимо что бы цена товара менялась в зависимости от выбранного значения веса товара.
Решение
Для реализации данного функционала нам необходимо что бы при вводе определенного значения веса товара цена динамически менялась без перезагрузки страницы.
Сначала создадим для товара поле для ввода с типом данных "Составное". В модуле "Шаблоны данных", в "Типы данных" находим "Объект каталога" или необходимый нам дочерний тип данных который используется для нашего товара. На примере шаблона "Современный интернет-магазин" мы добавим такое поле к типу данных "Телевизоры", в группе полей "Характеристики" мы изменим тип поля "Вес" на "Составное".
Заходим в карточку товара и проставляем например 10 значений для поля "Вес".
Далее в папку /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>');
});
}
});
Теперь необходимо подключить этот файл к главному шаблону вывода страниц /templates/demodizzy/xslt/layouts/default.xsl
<head>
...
<script type="text/javascript" charset="utf-8" src="/templates/demodizzy/js/price.js"></script>
...
</head>