Magento: Show Currency Selector in header

Here, I will show you how you can change the location of currency selector to header in Magento.

I suppose that you have already enabled/setup Multiple Currency in your Magento shop. If not then here is how to do it:- Magento: Setup multiple currency shop

By default, the currency selector is displayed in the left sidebar. Here, I will show you how you can show it in header just below the language selector.

Create a new phtml file (template/directory/currency-top.phtml) and write the following code in it :-


<?php if($this->getCurrencyCount()>1): ?>
<div class="box language-switcher" style="margin-left:15px">
    <label for="select-language">Your Currency: </label>
        <select name="currency" onchange="changeCurrency(this)">
        <?php foreach ($this->getCurrencies() as $_code => $_name): ?>
            <option value="<?php echo $_code ?>"<?php if($_code==$this->getCurrentCurrencyCode()): ?> selected="selected"<?php endif; ?>>
                <?php echo $_name ?> - <?php echo $_code ?>
            </option>
        <?php endforeach; ?>
        </select>
</div>
<script type="text/javascript">
//<![CDATA[
function changeCurrency(sObject){
    if(sObject.value){
        setLocation('<?php echo $this->helper('directory/url')->getSwitchCurrencyUrl() ?>currency/'+sObject.value);
    }
}
//]]>
</script>
<?php endif; ?>

Add currency_top block after store_language block inside header block of page.xml present around line #66 :-


<block type="page/html_header" name="header" as="header">
	<block type="page/template_links" name="top.links" as="topLinks"/>
	<block type="page/switch" name="store_language" as="store_language" template="page/switch/languages.phtml"/>	
	<block type="directory/currency" name="currency_top" template="directory/currency-top.phtml"/>
	<block type="core/text_list" name="top.menu" as="topMenu"/>
</block>

Add getChildHtml(‘currency_top’) below getChildHtml(‘store_language’) in template/page/html/header.phtml like below :-


<?php echo $this->getChildHtml('store_language') ?>			
<?php echo $this->getChildHtml('currency_top') ?> 

NOTE: Don’t forget to clear CACHE (System -> Cache Management) after you have made the above mentioned changes.

That’s all. Now, you will be able to see currency selector in the header of your site.

Hope this helps. Thanks.