How to override Magento admin view (template) files, quick and dirty way

6 Comments 31st JAN 2010 | Posted by Branko Ajzele in Magento

How to override Magento admin view (template) files, quick and dirty way

Suppose you are working on a extension that needs to either change some stuff or implement new stuff in the one of the Magento admin areas. For example, imagine a “Images” tab on the product edit section. If you were in a position where you need to do certain modifications on “Images” tab then you would most likely need to modify the app/design/adminhtml/default/default/template/catalog/product/helper/gallery.phtml file to do so. One of Inchoo coworkers and a good friend of mine, Ivan Weiler, made a Magento Admin theme module that enables you to achieve similar functionality for admin template files as you have for frontend template files.

However, sometimes you wont wish your extensions depend on the additional module for certain functionality. Stuff like “overriding” the admin view files can easily be achieved with just a few minor modifications of extended class.

Content of my app\code\community\MyCompany\MyModule\Block\Adminhtml\Catalog\Product\Helper\Form\Gallery\Content.php file.


class MyCompany_MyModule_Block_Adminhtml_Catalog_Product_Helper_Form_Gallery_Content extends Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content
{
    /**
     * This method has been overridden merely for the purpose of setting up a new view file
     * to be used in place of the default theme folder.
     *
     * @see app/code/core/Mage/Core/Block/Mage_Core_Block_Template#fetchView($fileName)
     */
    public function fetchView($fileName)
    {
        extract ($this->_viewVars);
        $do = $this->getDirectOutput();

        if (!$do) { ob_start(); }

        include getcwd().'/app/code/community/MyCompany/MyModule/blocks/Adminhtml/catalog/product/helper/gallery.phtml';

        if (!$do) {$html = ob_get_clean(); }
        else { $html = ''; }

        return $html;
    }
}

Which goes inline with the config.xml file entry like:

...
<blocks>
	<adminhtml>
		<rewrite>
			<catalog_product_helper_form_gallery_content>MyCompany_MyModule_Block_Adminhtml_Catalog_Product_Helper_Form_Gallery_Content</catalog_product_helper_form_gallery_content>
		</rewrite>
	</adminhtml>
</blocks>
...

In the example below, I am pointing the block to look for my view file within my module folder, and not within some Magento design folder. Basically my gallery.phtml is the same as the original Magento adminhtml view file for the same purpose, but now I can go in and implement my additional stuff in it.

Approach like this can have its advantage in terms of keeping all the required overridden design files in your own module directory.

For those who need it… cheers.

If you like what you read, please share it.

  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Yahoo! Bookmarks
  • Reddit
  • Technorati
  • Twitter
  • StumbleUpon
  • LinkedIn
  • Netvibes
  • NewsVine
  • Sphinn
  • Tumblr
  • Posterous

To post code in comments, place your code inside [code] and [/code] tags.

There are 6 comments (Add Yours +)

  • Anatoly A. Kazantsev Says

    What about this lines in your config.xml:

    default

    yout_theme_name

    Then you simple do the same as with front end themes.

  • Very nice. I like this fetchView method better since the config.xml method can only be used by one module! If you install two modules that use that method they will conflict, so bravo for finding a friendlier solution, although I would still put my template files in the adminhtml/default/default/template// folder.

  • Anatoly A. Kazantsev Says

    This approach doesn’t solve conflict problems between modules.

    Using this method two modules can overwrite same class, so you get same problem on another level.

    The difference is how often conflicts happen.

  • Exactly, but it is potentially a very large difference.

  • Does anyone know how to override adminhtml dashboard graph block ? I tried with this code and doesn’t work. However, this code works perfectly with other dashboard blocks. I don’t understand why doesn’t work with only graph.

    Mycompany_Mymodule_Block_Graph

  • arpit chugh Says

    can any one tell me where is that gallery .phtml

Leave a Comment

Please wrap all source codes with [code][/code] tags.
Magento Design and Development | Magento SEO | iPhone Application Development Web Application Development with ZEND | WordPress Ecommerce | WordPress development
Sitemap

Inchoo - webappsolutions | 2009