我更改了 magento 中的一些功能以去除价格中的小数。该解决方案似乎适用于没有选项的简单产品,但有选项的产品在选择该选项时仍显示 .00。具有讽刺意味的是,该选项的下拉菜单显示了该选项的额外成本,但没有小数位,但选择该选项的主要价格仍显示小数位。这可以在js文件中吗?可配置的.js 有 reloadOldPrice() 方法我试图转储它,但价格变量总是 0 有什么想法吗?
3 回答
**Go your price.phtml file**
201号线
<?php echo $_coreHelper->currency($_price, true, true) ?>
replace this code
<?php $_prix = $_coreHelper->currency($_price,true,true) ?>
<?php $_prix = str_replace(".00", "", $_prix); ?>
<?php echo $_prix ?>
尝试使用免费扩展ET Currency Manager。在这个扩展中实现了这个功能。
新编辑
我以前的代码确实行不通。我测试了以下,它的工作原理:
// Wrap original reloadPrice function
spConfig.reloadPrice = spConfig.reloadPrice.wrap(function(original){
// Call original reloadPrice() function
original();
// Get the DOM-element that contains the price
var priceSpan = $('product-price-'+this.config.productId).down();
// Get the current value
var oldP = priceSpan.innerHTML;
// Change the value
var newP = oldP.sub('.00','');
// Update the element
priceSpan.update(newP);
});
在 Magento 中,spConfig
对象定义为var spConfig = new Product.Config(...);
,因此请务必在 spConfig 实例化之后添加我在此处给出的代码。
还有工作要做:
我建议将 更改var line newP = oldP.sub('.00','');
为也可以捕获的内容,00
,因为在某些语言环境中,这将是价格格式。
此外,例如,如果您选择显示含税和不含税的价格,则上面的代码将不起作用,因为$('product-price-'+this.config.productId).down()
它将包含两个元素(我认为)。
如果您宁愿将代码附加到configurable.js
文件中,则应将其附加为:
Product.Config.prototype.reloadPrice = Product.Config.prototype.reloadPrice.wrap(...);
(注意.prototype
我在第一个答案中忘记的那个)。
旧帖子(不起作用)
如果人们想知道为什么它不起作用,首先它应该Product.Config.prototype.formatPrice
代替Product.Config.formatPrice
,其次,formatPrice 函数显然不负责价格 html 的输出方式。
configurable.js
还有一个函数formatPrice
,可能在价格更新时调用。
所以你可以尝试:
Product.Config.formatPrice = Product.Config.formatPrice.wrap(function(originalFormatPrice, price, showSign) {
var str = originalFormatPrice(price, showSign);
return str.slice(0, -3); // remove last three characters (.00)
});