Geoffrey
Geoffrey

Reputation: 467

Add option to Magento system admin

I would like to add a textbox to the Header block located inside System>Config>Design>Header, the location in the image below.

location of input box

I know this has to be done in xml, but I am not sure where. Also how would I display that in an phtml file?

Upvotes: 1

Views: 890

Answers (2)

Supravat Mondal
Supravat Mondal

Reputation: 2584

First add a field in system.xml file which is located in

app/code/core/Mage/Page/etc/system.xml,under header section

<header translate="label">
    ..........
        <welcome_massage translate="label">
            <label>Welcome Massage</label>
            <frontend_type>text</frontend_type>
            <sort_order>35</sort_order>
            <show_in_default>1</show_in_default>
            <show_in_website>1</show_in_website>
            <show_in_store>1</show_in_store>
        </welcome_massage>
    </fields>
</header>

Then add a method in header block , app/code/core/Mage/Page/Block/Html/Header.php

public function getWelcomeMassage()
{
    return $this->_data['welcome_massage'] = Mage::getStoreConfig('design/header/welcome_massage') ;
}

Last call this method in header.phtml file, like that

<?php echo $this->getWelcomeMassage() ?>

Note : You see that I have code in core files. You should rewrite the core files.

Overriding Magento blocks, models, helpers and controllers

Overwrite system.xml

Upvotes: 0

Rabea
Rabea

Reputation: 2034

In code/core/Mage/Page/etc/system.xml you will find the configuration that Magento reads to show those fields, for example the "Small Logo Image src" is a field called logo_src_small. The needed is a module that will tell Magento about:

  1. The extra field in the admin panel under header.

    <config>
        <sections>
            <design>
                <groups>
                <header>
                <fields>
                <new_field translate="label">
                  <label>New Field</label>
                  <frontend_type>text</frontend_type>
                  <sort_order>1</sort_order>
                  <show_in_default>1</show_in_default>
                  <show_in_website>1</show_in_website>
                  <show_in_store>1</show_in_store>
                </new_field>
                </fields>
                </header>
                </groups>
            </design>
        </section>
    </config>
    
  2. Rewrite the block class code/core/Mage/Page/Block/Html/Header.php so you can add the method that will expose the new field.

  3. In the app/design/frontend/{Package}/{Theme}/template/page/html/header.phtml you can easily call $this->getNewField() where getNewField() is the method you have in the class we overridden in point 2.

A couple of links to help you start:

Upvotes: 1

Related Questions