我在Magento 1.7安装上有一个产品页面,其产品具有分层定价。它应该说买入4并保存13%,它在一瞬间完成,然后13%的值被100%覆盖(这是不正确的)。我只能假设页面上有一些错误的JavaScript导致了这种情况,但我不知道如何找到它。有人可以给我一些关于如何找到并修复这个bug的建议吗?
答案 0 :(得分:7)
查看Chrome检查器中的HTML元素:class="benefit"
。
在“资源”标签中搜索“.benefit”,1匹配,在loupe.js文件中。
转到Scripts选项卡,loupe.js文件,美化代码,搜索“.benefit”。
$$('.benefit').each(function(el) {
var parsePrice = function(html) {
return parseFloat(/\d+\.?\d*/.exec(html));
};
var container = $(this.containers[3]) ? this.containers[3] : this.containers[0];
var price = parsePrice($(container).innerHTML);
var tierPrice = $$('.price.tier-' + i);
tierPrice = tierPrice.length ? parseInt(tierPrice[0].innerHTML, 10) : 0;
var $percent = Selector.findChildElements(el, ['.percent.tier-' + i]);
$percent.each(function(el) {
el.innerHTML = Math.ceil(100 - ((100 / price) * tierPrice));
});
}, this);
感谢Chrome Inspector,在不到一分钟的时间内找到了该脚本。
现在,这是罪魁祸首:
el.innerHTML = Math.ceil(100 - ((100 / price) * tierPrice));
这是一个简单的数学计算。我不知道tierPrice
是什么,但我相信您可以找到适合您业务的正确计算(Math.ceil
汇总数字)。
答案 1 :(得分:2)
实际上它是
for (var i > 0; i < this.tierPrices.length; i++) {
如果您将其替换为1,它将只计算第一层价格的正确储蓄%,之后不会为其他价格计算,它们仍将设置为100%。
虽然他需要为所有等级计算它,所以如果i
大于0,他需要计算正确的等级%,否则它与产品价格相同或等于0或100 %
希望有所帮助
答案 2 :(得分:0)
对于那些对Magento 1.7中的错误感兴趣的人,其中等级价格节省总是显示为100%,这是修复:
在js / varien / product.js中,在第748行更改以下内容:
for (var i = 0; i < this.tierPrices.length; i++) {
带
for (var i > 1; i < this.tierPrices.length; i++) {
答案 3 :(得分:0)
虽然这是一篇很好的帖子,试图找到问题的根源,我发现页面上的解决方案只是阻止代码运行,但实际上并没有解决问题。我在这里发布了一个解决这个问题的方法: