我在搜索中找到的只是一个编程解决方案。 我知道我们可以为英文商店修改/lib/Zend/Locale/Data/en.xml。 en.xml中有这一部分:
<currencyFormats>
<currencyFormatLength>
<currencyFormat>
<pattern>#,##0.00 ¤</pattern>
</currencyFormat>
</currencyFormatLength>
</currencyFormats>
价格以这种格式显示:1,321.54 现在要从价格中删除小数部分我认为我唯一要做的就是将en.xml更改为如下所示:
<currencyFormats>
<currencyFormatLength>
<currencyFormat>
<pattern>#,##0 ¤</pattern>
</currencyFormat>
</currencyFormatLength>
</currencyFormats>
问题是在此更改后,价格显示为所需(1,132格式),但没有货币符号($)。 我在这里失踪了什么? 提前谢谢。
更新 当 模式 节点更改为以下内容时,我仍在尝试
<pattern>¤ #,##0</pattern>
价格随货币符号($ 1,132)而来,但不是在期望的位置O_O,要求是在右侧有货币符号没有左边:( SO ..
答案 0 :(得分:7)
此处的所有答案都涉及更改核心文件。这是不任何人应该做的事情。您可以开发模块并进行更改,也可以保留这些核心文件并使用str_replace
更改价格。
所以进入theme/template/catalog/product/price.phtml
并且(取决于配置)围绕第209行更改:
$_coreHelper->formatPrice($_price, true)
进入
$without_decimals = $_coreHelper->formatPrice($_price, true); echo str_replace(".00", "", $without_decimals);
这会从价格中移除.00。好处是保留其他小数的价格。如果您不想要这个,可以删除点后的所有内容,并使用round()
函数将数字向上舍入。
根据配置,其他价格可能需要更改(如果您显示不含税的价格等)。
答案 1 :(得分:5)
为了改变magento的价格精度,您需要覆盖一些核心文件。
在下面的示例中,我们将精度更改为0。
1)覆盖lib / Zend / Currency.php并改变线条周围的精度:
69 protected $_options = array(
70 'position' => self::STANDARD,
71 'script' => null,
72 'format' => null,
73 'display' => self::NO_SYMBOL,
74 'precision' => 0, /*CHANGE*/
75 'name' => null,
76 'currency' => null,
77 'symbol' => null,
78 'locale' => null,
79 'value' => 0,
80 'service' => null,
81 'tag' => 'Zend_Locale'
82 );
2)覆盖app / code / core / Mage / Core / Model / Store.php并更改roundPrice函数:
public function roundPrice($price)
{
return round($price, 4);
}
3)覆盖app / code / core / Mage / Directory / Model / Currency.php并更改格式功能:
public function format($price,
$options=array(),
$includeContainer = true,
$addBrackets = false)
{
return $this->formatPrecision( $price,
4,
$options,
$includeContainer,
$addBrackets);
}
答案 2 :(得分:4)
要从价格中删除小数部分,您需要修改该文件 &#34;代码/核心/法师/目录/型号/ Currency.php&#34;
首先,而不是行:
return $this->formatPrecision($price, 2, $options, $includeContainer, $addBrackets);
使用:
return $this->formatPrecision($price, 0, $options, $includeContainer, $addBrackets);
要更改货币符号的位置,请修改文件&#34; lib / Zend / Locale / Data / en.xml&#34;与行:
<pattern>#,##0.00 ¤;(#,##0.00 ¤)</pattern>
完成后,不要忘记清除缓存。
P.S。为避免升级过程中出现任何问题,我们强烈建议您通过扩展程序实施上述所有更改: (查看此处的工具:http://www.magentocommerce.com/magento-connect/catalogsearch/result/?id=&s=7&pl=0&eb=0&hp=0&q=currency|position&t=1&p=1)
答案 3 :(得分:2)
要从价格中删除小数部分,您需要修改文件:
1)首先是改变线周围的精度
LIB / Zend的/ Currency.php
protected $_options = array(
'position' => self::STANDARD,
'script' => null,
'format' => null,
'display' => self::NO_SYMBOL,
'precision' => 2,
'name' => null,
'currency' => null,
'symbol' => null,
'locale' => null,
'value' => 0,
'service' => null,
'tag' => 'Zend_Locale'
);
更改= &#39;精确度&#39; =&GT; 2,精确度&#39; =&GT; 0,
2)第二个文件(更改roundPrice函数:)
应用程序/代码/核心/法师/核心/型号/ Store.php
public function roundPrice($price)
{
return round($price, 2);
}
要强>
public function roundPrice($price)
{
return round($price, 0);
}
3)第三个也是最后一个是更改格式功能:
应用程序/代码/核心/法师/目录/型号/ Currency.php
public function format($price,
$options=array(),
$includeContainer = true,
$addBrackets = false)
{
return $this->formatPrecision( $price,
2,
$options,
$includeContainer,
$addBrackets);
}
以强>
public function format($price,
$options=array(),
$includeContainer = true,
$addBrackets = false)
{
return $this->formatPrecision( $price,
0,
$options,
$includeContainer,
$addBrackets);
}
答案 4 :(得分:0)
除此之外,您还可以再添加一项更改。
请转到PriceCurrency.php
页面
然后将最后一行更改为
public function round($price)
{
return round($price, 0);
}
之后在PriceCurrencyInterface.php
页面制作
const DEFAULT_PRECISION = 0;
在顶部。
这就是全部。希望它能奏效。