Не пересчитывается сумма на странице товара если заменить $PRICE$ на $PRICE_RAW$

голоса: 0

На странице товара, при изменении количества товара,пересчитывается сумма за товар. Если в шаблоне заменить переменную $PRICE$ на $PRICE_RAW$ цена перестает пересчитваться. можно ли внести правки в этот скрипт и где он расположен? 

Адрес сайта igrushkanaelku.ru
| Автор: | Категория: Интернет-магазин
вы код назад на $PRICE$ уже изменили или все еще $PRICE_RAW$ стоит, так как я проверяю и все отлично работает, вставьте код снова если убрали для проверки
Yuri_Geruk,
заменил. попробуйте

Ответов: 1

Голоса: +1
 
Лучший ответ

Если Вы взглянете на код функции у инпута для ввода количества checkNumber, то увидите следующее

function checkNumber(obj, event, changePrice) {
	var err_msg = '';
	var obj_id = $(obj).attr('id').split('-');
	var pref = obj_id[0].replace(/^q/, '');
	var id = obj_id[1];

	$('#'+pref+'-'+id+'-options-selectors').find('input:checked, select').each(function(){
		if($(this).val() === ''){
			err_msg += '<li>'+$(this).parent().parent().find('span.opt').html().replace(':', '')+'</li>';
		}
	});

	if(err_msg !== ''){
		err_msg = checkNumber_err.replace('%err_msg%', err_msg);
		shop_alert('<div class="MyWinError">'+err_msg+'<div>',checkNumber_header,'warning',350,100,{tm:8000,align:'left',icon:'/.s/img/icon/warning.png'});
		return false;
	}else{
		event = (event)?event:window.event;
		var code = (event.charCode) ? event.charCode : event.keyCode;
		var el = event.target || event.srcElement;
		if((code >=48 && code <=57) || (code == 37 ) || (code == 45) || (code==8) || (code==46)){
			if(parseInt(changePrice)) setTimeout(function(){optChangePrice(obj)}, 100);
			return true;
		}else{
			return false
		}
	}
}

А именно важны строки 

var obj_id = $(obj).attr('id').split('-');
var pref = obj_id[0].replace(/^q/, '');
var id = obj_id[1];

Т.е. чтобы это работало корректно, нужно чтобы $PRICE_RAW$ был обернут в span или div с id, где через дефис располагаются $BLOCK_PREF$ и $ID$, например так <span id="$BLOCK_PREF$-$ID$-price">1386</span>.

Посмотрите исходный код $PRICE$, чтобы убедиться

| Автор:
Выбор ответа лучшим | | Автор: Yuri_Geruk

Проблема так не решается. Если так написать, как вы сказали, значение $BLOCK_PREF$ - будет пустым. и код выглядит так:

<span id="-6205-price">23000</span>

 в итоге посмотрел как выглядит код для $PRICE$ 

<span class="id-good-6205-price">1000руб.</span>

Обернул по аналогии $PRICE_RAW$, но сумма не пересчитывается. 

Денис,

значит есть страница, на которой $BLOCK_PREF$ не работает и по-моему это страница товара, там можно его заменить на "id" текстом. 

А вот строка отвечающая за цену

$("."+pref+"-good-"+id+"-price").html(price);

Т.е. цену нужно создавать не с id, а с классом и виде например таком:

<span class="id-good-$ID$-price">$PRICE_RAW$</span>

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

...