Magento以日元做基本货币时小数点格式解决方案

最近在建设日文版的magento,使用了它的日文语言包及ec-giken相应的插件,其他的一切功能都还很不错,不过在支付时,发现Magento有一个比较严重的问题“Magento日文货币格式竟然在小数点后有两位0”,比如价格是¥1,000,总是要显示成为¥1,000.00,日元的最小货币单位是元,且没有小数点,这个问题非常严重。在支付时,如果是用paypal,会出现货币金额错误的提示,而且两位数的差距价格。日本人看到这个价格要吓一大跳。

下面就稍微总结一下。
一是修改下列这个文件:

app\code\core\Mage\Core\Model\Store.php 找到roundPrice($price)这个函数,里面的round($price, 2),修改成为floor($price)。不过这个修改实际上对界面是没有影响的,仅仅是在计算的时候只取整数。

二是修改以下文件:

修改文件:code/core/Mage/Core/Model/Store.php 找到

public function formatPrice($price, $includeContainer = true)
{
if ($this->getCurrentCurrency()) {
return $this->getCurrentCurrency()->format($price, array(), $includeContainer);
}
return $price;
}

改成:

public function formatPrice($price, $includeContainer = true)
{
if ($this->getCurrentCurrency()) {
return $this->getCurrentCurrency()->format($price, array(‘precision’=>0), $includeContainer);
//
区别就是在这里,array(‘precision’=>0)就是去掉小数部分,array(‘precision’=>1) 的话就只保留1位小数。 具体需要多少位小数,就由你去自由设置了。
}
return $price;
}

再刷新页面,小数点消失,显示正常了。

另外还涉及

这里就要更改一下设置了:打开lib/Zend/Locale/Data/目录下的默认语言.xml 编辑:
Japanese Yen
¥
把¥换成日文元然后再找到  #,¤ ##0.00

 

当然这样的修改方法缺陷很大,就是在有多个StoreView的时候,没办法保证其他货币的正确显示。相信在后续的Magento版本里面,这个问题应该可以得到修正吧。

Magento: Category Flat Data reindex时General error: 1005错误解决

在magento进行Category Flat Data索引有呾,并出现如下错误内容:
‘Zend_Db_Statement_Exception’ with message ‘SQLSTATE[HY000]: General error: 1005 Can’t create table ‘xxx catalog_category_flat_store_1.frm’ (errno: 150)’ in xxx/lib/Zend/Db/Statement/Pdo.php:234

解决方法:
在phpMyAdmin中运行如下:
ALTER TABLE catalog_category_entity ENGINE=INNODB
ALTER TABLE core_store ENGINE=INNODB