gpt4 book ai didi

javascript - Magento 层级价格 - BUY x for Y 层级价格的类声明 - javascript

转载 作者:数据小太阳 更新时间:2023-10-29 05:19:36 25 4
gpt4 key购买 nike

There is an outstanding bug in 1.6+ versions of Magento where the % savings for tier prices defaults to 100% when an option is selected.其他贡献者建议在第 747 行左右更改 product.js

for (var i = 0; i < this.tierPrices.length; i++) {

成为

for (var i = 0; i > this.tierPrices.length; i++) {

这解决了节省百分比的问题,但该代码块永远不会执行。我绝不是 Javascript 专家,但这个 block 似乎在选择选项时更新等级价格和节省百分比。我想找到问题的根源,而不是“将其注释掉”。

从我在 Firebug 中的调试中,我注意到 product.js 中的层级价格类是错误的,因此检索到层级价格 0,这就是节省百分比始终为 100% 的原因。Firebug 将价格显示为

class="tier-prices product-pricing">   
Buy 10 for
<span class="price">$40.00</span>

而 product.js 正尝试使用

检索对象
$$('.price.tier-' + i).each(function (el) {

如果将上面的改成

$$('.tier-prices .price).each(function (el) {

检索到层级价格,但对于一个产品的多个层级价格,无法单独引用它们。上面的“价格”类没有声明唯一标识符或迭代编号。

层级价格的 class="price"在哪里声明?在 tierprices.phtml 的代码中,它看起来像这样

<?php echo $this->__('Buy %1$s for %2$s each', $_price['price_qty'], $_price['formated_price'])?>

最佳答案

我刚刚花了一些时间在这上面,因为在我将客户的 Magento 站点升级到 1.7.0.2 后它真的开始困扰我。

这有两个部分,我将说明位置和修复,但这些不会是升级证明(因为你需要创建文件的副本并将它们放在你的主题特定文件夹中,尽管我不确定所讨论的 JS 文件是否可行。

1) 查看修复

在文件 /design/frontend/base/default/template/catalog/product/view/tierprices.phtml

您需要替换行 32-34

$_product = $this->getProduct();
$_tierPrices = $this->getTierPrices();
$_finalPriceInclTax = $this->helper('tax')->getPrice($_product, $_product->getFinalPrice(), true);

使用以下代码:

$_product = $this->getProduct();
$_tierPrices = array();

foreach($this->getTierPrices() as $index => $info) {
$_tierPrices[$index] = $info;
$_tierPrices[$index]['formated_price'] = str_replace('class="price"', 'class="price tier-'.$index.'"', $info['formated_price']);
$_tierPrices[$index]['formated_price_incl_tax'] = str_replace('class="price"', 'class="price tier-'.$index.' tier-'.$index.'-incl-tax"', $info['formated_price_incl_tax']);
}
$_finalPriceInclTax = $this->helper('tax')->getPrice($_product, $_product->getFinalPrice(), true);

这解决了类未正确呈现的问题,正如您已经发现的那样。 Here is where I found this code - 虽然它没有解决所有问题,因此 JS 发生了变化。

2) JS修复

在文件 js/Varien/product.js 中,您需要替换 757-769 行:

$$('.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);

有了这个:

//
// Code fixed to prevent the redundant inner loop and to use actual tiered pricing in calculation
// It also takes the optional price variants into consideration (eg: +£2 for a blue tshirt)
// Note: I've made this comment deliberately large, to keep the line numbers in sync
//
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);
$$('.percent.tier-' + i).each(function (el) {
el.innerHTML = Math.ceil(100 - ((100 / price) * (this.tierPrices[i] + parseFloat(optionPrices))));
}, this);

我希望这至少能为一个人节省几个小时的生命。

T

关于javascript - Magento 层级价格 - BUY x for Y 层级价格的类声明 - javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13504056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com