четверг, 9 сентября 2010 г.

Валюта в magento

Вот следующая проблема, которая вылезла после обновления. Для отображения цены в гривнах используется международный знак гривны - значок "₴".
Нашему пользователю и так не всегда "видно" в какой валюте цена, а тут еще и непонятный знак... Спросили бы у меня месяца 4 назад, что это за знак - я бы не ответил.

Потому "грн" как-то привычнее, да и в магазинах мы видим цену в "грн", а не в "₴".

Ранее я делал так, как описано здесь, но с точки зрения мадженто это некошерно, потому как при обновлении все изменения в core файлах "слетят", что у меня вполне успешно и произошло. Поетому был написан модуль (хотя по размеру модулем назвать его тяжело) для единственной цели - перехватывать событие форматирования валюты и подставлять свои значения.

Ну вот собственно и сам модуль:



/app/code/local/SM/Currency/etc/config.xml
<?xml version="1.0"?>

  
    
      1.0.0
    
  
  
    
      
        
          SM_Currency_Model_Store
        
      
    
  


/app/code/local/SM/Currency/Model/Store.php
<?php
class SM_Currency_Model_Store extends Mage_Core_Model_Store {

  public function formatPrice($price, $includeContainer = true) {

    $currency = $this->getCurrentCurrency();

    if($currency) {
      if ($currency->getCode() == 'UAH') {
        return $currency->format($price, array('precision' => 0, 'symbol' => 'грн'), $includeContainer);
      }
      else {
        return $currency->format($price, array('precision' => 0), $includeContainer);
      }
    }

    return $price;
  }
}

9 комментариев:

  1. Все круто, только нехватает <?php у модели и файла etc/modules/SM_Currency.xml

    ОтветитьУдалить
  2. Уже поправил... Теперь вроде все есть. Осталось понять как тут выкладывать файлы (не нашел такой возможности :( )

    ОтветитьУдалить
  3. Спасибо, помогли. Жаль что только с версии 1.4.х работает. (на сколько разобрался).

    ОтветитьУдалить
  4. Разобрался. Можно сделать и для 1.3.
    Надо устанавливать ещё одну переменную кроме symbol. display=2 (использовать символ. А то в 1.3. стоит display=3, то есть использовать shortname)

    ОтветитьУдалить
  5. Я рад, что Вам информация была полезной и спасибо за комментарии :)

    ОтветитьУдалить
  6. Автор забыл указать что нужно также создать файл /app/etc/modules/SM_All.xml

    с содержимым

    <?xml version="1.0"?>
    <config>
    <modules>
    <SM_Currency>
    <active>true</active>
    <codePool>local</codePool>
    </SM_Currency>
    </modules>
    </config>

    надеюсь кому-то поможет

    ОтветитьУдалить
  7. можно просто раззиповать этот архив в корень Magento: http://upload.com.ua/get/902427261/SM_Currency.zip

    ключевые слова: magento изменить значок грн цена в грн как сменить название валюты UAH ₴

    ОтветитьУдалить
  8. Спасибо. Помог новичку выяснить как узнать валюту сайта =)

    ОтветитьУдалить