Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I add a tab to the Sale Order Admin Page?

Tags:

magento

I want to add a custom tab to the order page in the admin of magento. Is there a way to do this with a simple override?

like image 987
Chris Avatar asked Dec 27 '22 15:12

Chris


1 Answers

Assuming you know how to do a module, here are the steps you need to perform:

  1. layout update: in your admin's xml layout file you want to "listening" to the admin's order view rendering handle and add your tab:

    <layout>
        <adminhtml_sales_order_view>
            <reference name="sales_order_tabs">
                <action method="addTab"><name>the_name_of_your_tab</name><block>the_block_alias_of_your_module/path_to_your_tab_file</block></action>
            </reference>
        </adminhtml_sales_order_view>
    </layout>
    
  2. the tab file: I generally try to respect Magento's folder structure, so this file would be in app/code/local-or-community/YourNamespace/YourModule/Block/Adminhtml/Order/View/Tab/File.php and will have at least:

    <?php
    class YourNamespace_YourModule_Block_Adminhtml_Order_View_Tab_File
        extends Mage_Adminhtml_Block_Template
        implements Mage_Adminhtml_Block_Widget_Tab_Interface
    {
        protected $_chat = null;
    
        protected function _construct()
        {
            parent::_construct();
            $this->setTemplate('yourmodule/order/view/tab/file.phtml');
        }
    
        public function getTabLabel() {
            return $this->__('Tab label');
        }
    
        public function getTabTitle() {
            return $this->__('Tab title');
        }
    
        public function canShowTab() {
            return true;
        }
    
        public function isHidden() {
            return false;
        }
    
        public function getOrder(){
            return Mage::registry('current_order');
        }
    
  3. The .phtml file, which has to respect the path you specified in the block's __construct(), and should hace something like:

    <div class="entry-edit">
        <div class="entry-edit-head">
            <h4><?php echo $this->__('a title'); ?></h4>
        </div>
        <div class="fieldset fieldset-wide">
            the content you want to show
        </div>
    </div>
    

Hope That Helps

like image 51
OSdave Avatar answered Feb 01 '23 11:02

OSdave