0

我更改了 magento 中的一些功能以去除价格中的小数。该解决方案似乎适用于没有选项的简单产品,但有选项的产品在选择该选项时仍显示 .00。具有讽刺意味的是,该选项的下拉菜单显示了该选项的额外成本,但没有小数位,但选择该选项的主要价格仍显示小数位。这可以在js文件中吗?可配置的.js 有 reloadOldPrice() 方法我试图转储它,但价格变量总是 0 有什么想法吗?

4

3 回答 3

0
**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 ?>
于 2013-04-26T13:03:53.683 回答
0

尝试使用免费扩展ET Currency Manager。在这个扩展中实现了这个功能。

于 2013-04-27T20:40:36.563 回答
0

新编辑

我以前的代码确实行不通。我测试了以下,它的工作原理:

// 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)
});

于 2013-04-26T13:09:31.280 回答