Как изменить формат цены или локали в Magento 1.5? - PullRequest
1 голос
/ 21 июля 2011

Я собираюсь написать общую проблему в magento и решение, которое лучше всего подходит для меня.

Я искал в сети и отражал magento-код в течение нескольких часов, чтобынайти решение вышеуказанной проблемы.Я хотел, чтобы венгерский ценовой формат был 1 000 Ft вместо 1 000,00 Ft

Я заменил значение 'precision' на 0 везде, но не получилось.Вот список, где я исследовал:

  • app / code / core / Mage / Core / Model / Store.php

    function formatPrice(){ $option = array('precison' => 2 ); ... }

  • app / code / core / Mage / Directory / Model / Currency.php

    function format() { $this->formatPrecision($price, 0, $options, $includeContainer, $addBrackets); }

После отражения кода я понял, что этовсе изменения не имеют значения вообще, потому что информация о числовом формате основана на locale информации, которая предоставляется Zend core API .

Итак, вотРешение, которое я нашел, и, надеюсь, форматирование цены будет стандартным для всего приложения.

Вы найдете файл YY.xml в lib / Zend / Locale / Data/ , где YY - код страны вашей страны.У меня есть hu.xml

Вы найдете часть:

<currencyFormats>
    <currencyFormatLength>
        <currencyFormat>
            <pattern>#,##0 ¤</pattern>
        </currencyFormat>
    </currencyFormatLength>
    <unitPattern count="other">{0} {1}</unitPattern>
</currencyFormats>

О строке формата вы можете найти не очень полезную информацию на http://framework.zend.com/manual/en/zend.locale.parsing.html

1 Ответ

0 голосов
/ 18 сентября 2012

Скопируйте "app / code / core / Mage / Directory / Model / Currency.php" в "app / code / local / Mage / Directory / Model / Currency.php" и замените функцию форматирования.

public function format($price, $options=array(), $includeContainer = true, $addBrackets = false)
    {
        return str_replace(',00', '', $this->formatPrecision($price, 2, $options, $includeContainer, $addBrackets));        
    }
...