Pull to refresh

Comments 4

Наконец-то появился первый пост на хабре о модулях для магенты! Очень рад :)
У меня несколько комментариев:
— не всегда обязательно делать свой модуль, в вашем случае, например, достаточно продублировать структуру папок app/code/core/Mage/Core/Model/ в app/code/local/Mage/Core/Model/ — магента сама подключит модель
— «На этом, собственно, все. Обновив страницу магазина...» — не забываем про кэш (в большинстве случаев приходится его чистить), у меня при разработке всегда выключен
— если модуль содержит админовский функционал (конфиг, например), то при включении/выключении модуля необходимо перелогиниться админом, т.к. магента хранит в сессии параметры установленных модулей
— очень некрасиво хардкодить «руб» в модель (как на счет кодировки вашего php-файла? utf/ansi? )
— ну и название поста не совсем корректно, вы не изменяли магенту, вы ее расширяли (extends)
Согласен со всем вышеприведенным.

Про кэш, каюсь, забыл упомянуть — т.к. во время разработки он и у меня выключен.
Про хардкодинг, опять же, не могу не согласиться, но другого решения не нашел и не смог придумать. Как вариант, можно вообще убрать проверку, но это плохо скажется на многовалютных магазинах. Кодировка — utf.
О возможности простого дублирования структуры — не знал, спасибо!

А вообще, основной целью было показать на элементарном примере то, насколько просто изменить базовую функциональность и дописать свою.
порылся с валютами, нашел корректную замену вашему preg_match(руб)
if ($this->getCurrentCurrencyCode() == 'RUB')… дальше по тексту…
таким образом вы не будете привязаны к локализации
соответственно, для белорусских рублей, например, код валюты BYR
ну и еще более красивый вариант — повесить observer на евент core_locale_set_locale
config.xml:
    <frontend>
        <events>
            <core_locale_set_locale>
                <observers>
                    <mycompany_mymodule_locale_observer>
                        <type>singleton</type>
                        <class>mymodule/observer</class>
                        <method>currencyPrecision</method>
                    </mycompany_mymodule_locale_observer>
                </observers>
            </core_locale_set_locale>
        </events>
    </frontend>

app/code/local/Mycompany/Mymodule/Model/Observer.php:
class Mycompany_Mymodule_Model_Observer extends Mage_Core_Model_Abstract 
{
    public function currencyPrecision(Varien_Event_Observer $observer)
    {
        $observer->getLocale()->currency('RUB')->setFormat(array('precision'=>0));
        $observer->getLocale()->currency('BYR')->setFormat(array('precision'=>0));
    }
}
Sign up to leave a comment.

Articles