2011-06-03 102 views
15

我有3个选项可配置产品的实际价格价格差异,见下图:替换在Magento配置的产品选项

enter image description here

我想更换+£24.00,并与在+£75.00产品的实际价格。

因此,而是会说:£69.00£和120.00

我已经找到了代码被JS /瓦瑞恩/ product.js

我花了一点时间变化无常代码,但不能完全解读需要更改的内容。此文件中的第240行向下处理可配置产品的JavaScript事件。

我很感谢这里的任何帮助。

回答

20

这是由javascript执行的。您需要修改js/varien/configurable.js中的方法getOptionLabel(这是Magento 1.5.1.0,您的milage可能会因您使用的版本而异)。

此方法收到选项和价格区别要应用。如果您只想显示不同选项的绝对价格,则需要使用可配置产品的绝对基准值和选项的绝对差值自行计算。

方法的前几行是这样的:

getOptionLabel: function(option, price){ 
    var price = parseFloat(price); 

变化是让您得到绝对的基准价和期权的绝对差值。然后将它们加在一起得到选项的最终绝对价格。像这样:

getOptionLabel: function(option, price){ 
    var basePrice = parseFloat(this.config.basePrice); 
    // 'price' as passed is the RELATIVE DIFFERENCE. We won't use it. 
    // The ABSOLUTE DIFFERENCE is in option.price (and option.oldPrice) 
    var absoluteDifference = parseFloat(option.price); 
    var absoluteFinalPrice = basePrice + absoluteDifference; 
    // var price = parseFloat(price); 
    var price = absoluteFinalPrice; 

然后,你需要摆脱选项中的+和 - 符号。稍后在相同的方法中,当您调用this.formatPrice时,只需在每次调用中将第二个参数更改为false即可。在JS /瓦瑞恩/ product.js创建

你会发现另一个叫Product.Config相同的对象:

if(price){ 
     if (this.taxConfig.showBothPrices) { 
      str+= ' ' + this.formatPrice(excl, false) + ' (' + this.formatPrice(price, false) + ' ' + this.taxConfig.inclTaxTitle + ')'; 
     } else { 
      str+= ' ' + this.formatPrice(price, false); 
     } 

这个一些更多的注意事项。据我所知,这完全没有,因为它被替换为js/varien/configurable.js。

此外,如果只是更改js/varien/configurable.js,下次您升级Magento时,您可能会失去更改。最好创建另一个文件,如js/varien/my_configurable.js或其他,并在配置文件(产品)中调用它。xml)为您使用的任何主题。

+1

+1。多谢。对于1个属性选择是很好的,但是当有两个时,第二个属性的价格显示是错误的。 – 2013-01-22 00:13:41

+1

这对我来说并不适用于1.7 – 2013-06-25 04:07:24

+1

在Magento 1.7.2上试过这个如何使这项工作的任何提示。难以理解configurable.js – Josh 2013-08-13 02:59:09

4

这个扩展可能是有益的,我已经在过去使用它(这似乎是维持):

http://www.magentocommerce.com/magento-connect/Matt+Dean/extension/596/simple-configurable-products

+0

是的,1.4版本的任何线索都可以在1.7版本上正常工作? – Mike 2012-10-18 22:03:17

+1

找到了一个:https://github.com/organicinternet/magento-configurable-simple它的版本更新为1.7,但需要手动安装(下载然后上载),而不是使用Magento连接。 – Mike 2012-10-22 18:25:25

+0

github的1.9以及 – Mike 2014-09-17 21:15:29

0

编辑文件js/varien/product.js,看着行号691

如果我们要从产品详细信息页面更改属性价格,触发器将在此处触发。只需检查alert(price);,你可以得到可变的价格。

0

1.7(不知道这是什么时候改变了)事情发生了变化。结果是价格字符串在PHP中,当从法师/目录/块/产品/视图/选项/类型/选择调用时,_formatPrice函数中的Mage/Catalog/Block/Product/View/Options/Abstract.php内部.PHP

注意,改变任何的2类是要去招惹通过该网站的变化,不只是在特定组合

0

我在如何Magento默认情况下可以使用这样一个奇怪的逻辑惊讶。

应该可以看到每种变体的不同价格,甚至可以使用默认值。

Prestashop可以做到这一点,甚至可以在选择每个变体时自动切换图像!

4

在magento 1.9中,.js方法似乎不再适用。

取而代之,我更新了Abstract.php(/app/code/core/Mage/Catalog/Block/Product/View/Options/Abstract.php),将此文件复制到/ app/code/local/Mage/Catalog /块/产品/查看/选项/ Abstract.php。上线128,改变$ _priceInclTax和$ _priceExclTax变量如下:

$_priceInclTax = $this->getPrice($sign.$value['pricing_value'], true)+$this->getProduct()->getFinalPrice(); 

$_priceExclTax = $this->getPrice($sign.$value['pricing_value'])+$this->getProduct()->getFinalPrice(); 

我见过类似的解决方案,但是这是唯一的办法,以确保它也与事作品如负的产品选择和特殊价格折扣。

+0

这在Magento 1.9.1.0中可以工作,但如果您有多个选项集合,则会带来麻烦。无论如何它在我的情况下工作,所以我添加+1。 – 2015-11-26 19:07:26

1

找到一个解决方案here在Magento 1.9上工作,但它覆盖了核心代码,它应该这样做,以便它不会覆盖核心。

我在一个新的js文件中试过类似的东西,但不知怎的,核心configurable.js搞砸了,也许有人可以想出一种方式,使id没有。

Product.Config.prototype.getOptionLabel = Product.Config.prototype.getOptionLabel.wrap(function(parentMethod){ 
// BEGIN:: custom price display update 
var basePrice = parseFloat(this.config.basePrice); 
// 'price' as passed is the RELATIVE DIFFERENCE. We won't use it. 
// The ABSOLUTE DIFFERENCE is in option.price (and option.oldPrice) 
var absoluteDifference = parseFloat(option.price); 
// var price = parseFloat(price); 
if(absoluteDifference){ 
    // console.log(option); 
    price = basePrice + absoluteDifference; 
} else { 
    price = absoluteDifference; 
} 
// END:: custom price display update 

if (this.taxConfig.includeTax) { 
    var tax = price/(100 + this.taxConfig.defaultTax) * this.taxConfig.defaultTax; 
    var excl = price - tax; 
    var incl = excl*(1+(this.taxConfig.currentTax/100)); 
} else { 
    var tax = price * (this.taxConfig.currentTax/100); 
    var excl = price; 
    var incl = excl + tax; 
} 

if (this.taxConfig.showIncludeTax || this.taxConfig.showBothPrices) { 
    price = incl; 
} else { 
    price = excl; 
} 

var str = option.label; 
if(price){ 
    if (this.taxConfig.showBothPrices) { 
     // BEGIN:: custom price display update 
     // NOTE:: 'true' was changed to 'false' in 3 places. 
     str+= ' ' + this.formatPrice(excl, false) + ' (' + this.formatPrice(price, false) + ' ' + this.taxConfig.inclTaxTitle + ')'; 
    } else { 
     str+= ' ' + this.formatPrice(price, false); 
     // END:: custom price display update 
    } 
} 
return str; 

});

0
在Magento 1.9

根据需要 开放JS /瓦瑞恩/ configurable.js 转到功能getOptionLabel

修改该功能码。

相关问题