Magento 1.9 – Helper Rewrite Not Working

configurationmagento-1.9overrides

I've tried to rewrite a Helper class from a theme we are useing with the following in our modules config.xml

<global>
    <helpers>
        <util>
            <class>Hoi_Util_Helper</class>
        </util>
        <themeoptionsblacknwhite>
            <rewrite>
                <data>Hoi_Util_Helper_ThemeOptionsBlacknwhite_Data</data>
            </rewrite>
        </themeoptionsblacknwhite>
    </helpers>
</global>

I've then created the new helper class which includes our override getProductLabels() function:
app/code/local/Hoi/Util/Helper/ThemeOptionsBlacknwhite/Data.php

<?php
class Hoi_Util_Helper_ThemeOptionsBlacknwhite_Data extends Meigee_ThemeOptionsBlacknwhite_Helper_Data
{
    public function getProductLabels ($_product, $type) {
        switch ($type) {
            case 'new':
                if (Mage::getStoreConfig('meigee_blacknwhite_general/productlabels/labelnew')):
                    if (Mage::getStoreConfig('meigee_blacknwhite_general/productlabels/labelnew')):
                        $from = new Zend_Date($_product->getNewsFromDate());
                        $to = new Zend_Date($_product->getNewsToDate());
                        $now = new Zend_Date(Mage::getModel('core/date')->timestamp(time()));
                        if ($from->isEarlier($now) && $to->isLater($now)):
                            return '<span class="label-new">'.$this->__('New').'</span>';
                        else:
                            return false;
                        endif;
                    else:
                        return false;
                    endif;
                else:
                    return false;
                endif;
                break;
            case 'sale':
                if(Mage::getStoreConfig('meigee_blacknwhite_general/productlabels/labelonsale')):
                    exit;
                    $_finalPrice = MAGE::helper('tax')->getPrice($_product, $_product->getFinalPrice());
                    $_regularPrice = MAGE::helper('tax')->getPrice($_product, $_product->getPrice());
                    if ($_regularPrice != $_finalPrice):
                        if (Mage::getStoreConfig('meigee_blacknwhite_general/productlabels/salepercentage')):
                            $getpercentage = number_format($_finalPrice / $_regularPrice * 100, 2);
                            $finalpercentage = 100 - $getpercentage;
                            return '<div class="label-sale percentage">'.number_format($finalpercentage, 0).'% <span>'.$this->__('off').'</span></div>';
                        else:
                            return '<div class="label-sale">'.$this->__('Sale').'</div>';
                        endif;
                    else:
                        return false;
                    endif;
                else:
                    return false;
                endif;
                break;
        }

    }
}

But still Magento is using the origional helper class when it is called with:

<?php echo MAGE::helper('ThemeOptionsBlacknwhite')->getProductLabels($_product, 'sale'); ?>

I have also made sure that our Module is depending on the Meigee_ThemeOptionsBlacknwhite module.

<?xml version="1.0"?>
<config>
    <modules>
        <Hoi_Util>
            <active>true</active>
            <codePool>local</codePool>
            <version>0.1.0</version>
            <depends>
                <Meigee_ThemeOptionsBlacknwhite/>
            </depends>
        </Hoi_Util>
    </modules>
</config>

Best Answer

The error is that the original helper is declared case sensitively (which is not a good practice as you have experienced)

So instead of:

    <themeoptionsblacknwhite>
        <rewrite>
            <data>Hoi_Util_Helper_ThemeOptionsBlacknwhite_Data</data>
        </rewrite>
    </themeoptionsblacknwhite>

You should have:

    <ThemeOptionsBlacknwhite>
        <rewrite>
            <data>Hoi_Util_Helper_ThemeOptionsBlacknwhite_Data</data>
        </rewrite>
    </ThemeOptionsBlacknwhite>
Related Topic