We have covered a lot about Magento’s layout XML in our past 2 articles [1] [2]. We saw that Magento will read the layout XML files in a specific order and that the local.xml file is read at the very end of the sequence. This allows us to approach the implementation of new theme designs in a very modular and tidy way.
Most of the time, we would use one of the Magento supplied themes as a starting point for a new theme. The base default theme gives us all the standard theme features and implements the complete Magento layout and phtml files but the theme is almost completely unstyled. We can get a kick start from either the Magento default or modern themes, or if you installed a third party Magento design.

A minimalist layout folder
So we end up with a setup that we can work with but, often, we don’t want to use all the features, rearrange some of the features we want to keep and, most likely, add some of or own.
We know that we can just copy the selected starting design into a new design package and start modifying all the layout XML and phtml files but what if the original theme is updated with the next release or the theme designer (if using a third party theme) releases an update? To reduce the need to retrofit updates, we can plan our theme modifications better by putting all our layout modifications into our own local.xml file. As you can see from the example on the right, our layout folder is really minimalist and tidy. This way almost all of the original layout files are kept intact and, the added bonus is that you can see in one file what you have modified as opposed to hunting for your modifications in numerous layout files.
Working with local.xml is really no different to modifying the existing layout files, once you realize that any Magento layout file can target any layout handle. This means that we are really not going to tell you anything new if you are already familiar with modifying layout XML. Nevertheless, for the novice, these tricks may be useful and we hope that the more advanced will be able to take away some ideas too.
A general local.xml file will have the standard layout root element under which all the other layout handles will be nested:
<?xml version="1.0" encoding="UTF-8"?> <!-- /** * local.xml * * Local layout modifications for our local theme * * @category design * @package my_theme_default * @copyright Copyright (c) 2011 Magebase. */ --> <layout version="0.1.0"> ... </layout>
1. Adding and removing scripts and stylesheets
One of the things I find doing quite often is adding and removing JavaScript and CSS includes. For example, some third party extensions install their own CSS with, maybe a few lines of styling. I prefer to move this into the main stylesheet and just not include the original. Similarly, sometimes I don’t want some JavaScript included on all or some pages. Also, if I develop some of my own JS, I need to include it. Clearly, for functionality you develop via a custom module, you may have already created a module specific layout XML file that will handle your custom includes, but if it’s a theme specific JS feature, you may want to be able to include it in your theme’s layout XML.
To include an arbitrary file, you need to decide whether it is going to be included on every page of your site or just on some. This will determine the layout handle you need to specify.
We will work with the <default> handle to include our example script my_js.js and style my_styles.css on every page. We’ll use the standard addItem action method for adding files and target all this in the "head" block reference since that’s where the files are included.
<default>
<reference name="head">
<action method="addItem">
<type>skin_js</type>
<name>js/my_js.js</name>
<params/>
</action>
<action method="addItem">
<type>skin_css</type>
<name>css/my_styles.css</name>
</action>
</reference>
</default>
Similarly, to remove styles or scripts, use the removeItem action method:
<default>
<reference name="head">
<action method="removeItem">
<type>skin_css</type>
<name>css/brandext/slider.css</name>
</action>
<action method="removeItem">
<type>js</type>
<name>some_ext/jquery-1.4.2.js</name>
</action>
</reference>
</default>
Note that the second removeItem element targets a JavaScript file that was included by some extension under the Magento js folder rather than the theme folder.
2. Replacing a local jQuery include with one from the Google CDN
We saw how we can easily include/exclude JavaScript files in the previous section. We removed a locally included jQuery library with the goal to replace it with the same library file loaded from the Google CDN. This will hopefully improve our site’s performance a little.
<default>
<reference name="head">
<block type="core/text" name="google.cdn.jquery">
<action method="setText">
<text><![CDATA[<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script><script type="text/javascript">jQuery.noConflict();</script>]]>
</text>
</action>
</block>
</reference>
</default>
In case you are wondering what’s going on here, closer inspection of the original included jQuery file showed that the jQuery.noConflict() call was added at the end of the file. This is required in order to avoid jQuery conflicting with the Magento built in Prototype library. Additionally, since the JavaScript file is being included from an external source, we can’t use the addItem action method.
To solve these problems in our replacement, we created a block of type core/text and added our script tag as a text node. The core/text block will automatically output the CDATA content into the head of our page since the default head.phtml has a call to: $this->getChildHtml().
3. Changing default block parameters
This somewhat cryptic section title refers to changing some default values in Magento template blocks such as the number of columns in the category grid or the number of upsell/crosssell products in their respective blocks.
Let’s start with changing the category grid:
<catalog_category_default>
<reference name="product_list">
<action method="setColumnCount">
<count>3</count>
</action>
</reference>
</catalog_category_default>
<catalog_category_layered>
<reference name="product_list">
<action method="setColumnCount">
<count>3</count>
</action>
</reference>
</catalog_category_layered>
<catalogsearch_result_index>
<reference name="search_result_list">
<action method="setColumnCount">
<count>3</count>
</action>
</reference>
</catalogsearch_result_index>
Note that we have to find all the pages that show a product grid and change the column count otherwise, they will use the Magento default values.
Changing the upsell grid on the product view, for example, is also very simple:
<catalog_product_view>
<reference name="upsell_products">
<action method="setItemLimit">
<type>upsell</type>
<limit>3</limit>
</action>
<action method="setColumnCount">
<columns>3</columns>
</action>
</reference>
</catalog_product_view>
Essentially, we are taking advantage of the fact that local.xml is processed at the end and the values set here will override any values set in other XML layout files.
4. Doing different things for logged in vs. not logged in users
Magento provides us with two interesting layout handles: <customer_logged_out> and <customer_logged_in>. We can be really creative in the way we can use these handles to affect our template depending on whether a customer is logged in or not. This also takes the logic out of the phtml files since we can include different content for the same layout block using this approach.
Let’s take the Magento built in stock alert functionality as an example. The default, if enabled, is to provide customers with a way to be alerted when a product comes back in stock by presenting the customer with a link, which when clicked, will add the logged in customer to a notification database. However, the usability of this feature suffers since when a customer is not logged in, they will be redirected to the standard Log In/Create an Account page. The wording on the notification link doesn’t indicate what a customer can expect when they click on it leading to potential frustration.
So, to improve usability, we want to display slightly different wording depending on whether the customer is already logged in or not. For this, we created a new phtml template block we are going to display instead of the default link. Since Magento will not show a Add to Cart button, we also want to show this block in the space of the button:
<catalog_product_view>
<!-- remove the original alert URL block; we will put it back into the add to cart block below -->
<reference name="alert.urls">
<action method="unsetChild">
<name>productalert.stock</name>
</action>
</reference>
<!-- create our new block as a child block of the addtocart block -->
<reference name="product.info.addtocart">
<!-- Block comes from the original stock alert block in productalert.xml -->
<block type="productalert/product_view" name="productalert.stock" as="productalert_stock" template="magebase/productalert.phtml">
<action method="prepareStockAlertData"/>
<action method="setHtmlClass">
<value>alert-stock link-stock-alert</value>
</action>
</block>
</reference>
</catalog_product_view>
We introduced our own phtml template in template/magebase/productalert.phtml. It contains:
<p class="<?php echo $this->getHtmlClass() ?>">
<?php if ($this->getSignupDesc()) : ?>
<span class="alert-description"><?php echo $this->getSignupDesc() ?></span>
<?php endif; ?>
<button type="button" title="<?php echo $this->escapeHtml($this->__($this->getSignupLabel())); ?>" class="button btn-alert" onclick="setLocation('<?php echo $this->escapeHtml($this->getSignupUrl()) ?>')"><span><span><?php echo $this->escapeHtml($this->__($this->getSignupText())); ?></span></span></button>
</p>
We added some more descriptive elements here in addition to the link (we turned it into a button to make it a clear call to action) so the customer can be clear as to what will happen. So, to make this work for the logged out and logged in states, we just need to add the following to our XML:
<customer_logged_out>
<reference name="product.info.addtocart">
<reference name="productalert.stock">
<action method="setSignupLabel" translate="value">
<value>Sign up to get notified when this product is back in stock</value>
</action>
<action method="setSignupText" translate="value">
<value>Sign Up For Alerts</value>
</action>
<action method="setSignupDesc" translate="value">
<value>Log in or create an account to be notified when this product is back in stock.</value>
</action>
</reference>
</reference>
</customer_logged_out>
<customer_logged_in>
<reference name="product.info.addtocart">
<reference name="productalert.stock">
<action method="setSignupLabel" translate="value">
<value>Click to get notified when this product is back in stock</value>
</action>
<action method="setSignupText" translate="value">
<value>Alert Me When In Stock</value>
</action>
<action method="setSignupDesc" translate="value">
<value>You can sign up to be notified when this product is back in stock.</value>
</action>
</reference>
</reference>
</customer_logged_in>
5. Removing, rearranging and replacing template blocks
Often we want to remove some blocks and replace them with our own modified ones as well as rearrange existing blocks.
There are two ways to remove blocks in layout XML:
- by using:
<remove name="" /> - by using:
<action method="unsetChild">
It is important that we understand what the difference between the two methods is. Essentially, the main difference is that the two methods operate on different contexts.
<remove name="" /> will operate on a global context, after all the layouts are processed which means that it will remove the named layout block completely, regardless of which layout handle added it. By using this approach, you can’t remove a block from one place and then add it in another.
<action method="unsetChild"> operates on a localized context, specifically, in the context where you use it. So, if you want to remove a specific block from a specific layout handle and possibly insert it at another position or layout handle, you need to use this approach.
As you can see, the difference between the two removal methods will give you a clue as to how you can go about rearranging your template layout. Use remove to get rid of unwanted blocks on a global level:
<default>
<!-- remove the language and store switcher and footer links blocks, we won't use them -->
<remove name="store_language" />
<remove name="store_switcher"/>
<remove name="footer_links" />
</default>
Use unsetChild to move or rearrange blocks in your layout:
<default>
<!-- move the breadcrumb block from the top.bar child block back to the template root
(this overrides the modern theme breadcrumb positioning) -->
<reference name="top.bar">
<action method="unsetChild">
<name>breadcrumbs</name>
</action>
</reference>
<reference name="root">
<block type="page/html_breadcrumbs" name="breadcrumbs" as="breadcrumbs"/>
</reference>
</default>
This example will replace the default product tabs block from the modern theme with our own tabs:
<catalog_product_view>
<reference name="product.info">
<action method="unsetChild">
<name>info_tabs</name>
</action>
<block type="catalog/product_view_tabs" name="product.info.tabs" as="info_tabs" template="catalog/product/view/tabs.phtml" >
<action method="addTab" translate="title" module="catalog">
<alias>upsell_products</alias>
<title>You may also like</title>
<block>catalog/product_list_upsell</block>
<template>catalog/product/list/upsell.phtml</template>
</action>
<action method="addTab" translate="title" module="catalog">
<alias>description</alias>
<title>Details</title>
<block>catalog/product_view_description</block>
<template>catalog/product/view/description.phtml</template>
</action>
<!-- neat trick to include a CMS Static block directly in the tab -->
<action method="addTab" translate="title" module="catalog">
<alias>shipping</alias>
<title>Shipping Costs</title>
<block>cms/block</block>
<template>null</template>
</action>
<!-- define the CMS block ID for the shipping info tab -->
<block type="cms/block" name="product.info.tabs.shipping" as="shipping">
<action method="setBlockId"><block_id>tab-product-shipping</block_id></action>
</block>
</block>
</reference>
</catalog_product_view>
Here, I also showed a nice little trick to include a static CMS block directly in the product tab all via layout XML only.
Conclusion
We saw how to utilize a local.xml layout file to manipulate and change the layout of a Magento theme. This powerful approach keeps all your template layout modifications in one single file thus making your modifications easy to find and also ensure an easier upgrade path if and when there is a theme update.
We can change almost all layout aspects of the standard Magento layout however there are some situations when this approach fails. Notably, this manifests itself the minute you want to modify the top.links block. Items in this block are added using the addLink action method so if you are wondering how to remove some links from the default set, the answer is, you can’t! Unfortunately, the page/template_links block class doesn’t implement a 'removeLink' action method so the resort is to remove the whole block using the unsetChild approach and add the links block back with our own links added to it in local.xml.
Another scenario is if you want to remove some of the navigation links from the My Account navigation. The easiest approach is probably to override the layout XML files that add the unwanted links. That’s why my screen shot of the layout folder at the start of this tutorial has some other layout files in it.
If you have any interesting local.xml tips and tricks, by all means share them in the comments section.
Originally published on magebase.com. Copyright © 2011 Magebase - All Rights Reserved.




Proud members of the
Robert,
An excellent article – particularly appreciated the info on customer_logged_in, etc.
Regards, Eddie
[...] http://bit.ly/jZP6SZ 5 useful tricks to manipulate the Magento theme layout using local.xml. Link – Trackbacks source: Topsy – magento tutorial – 5 Useful Tricks For Your Magento [...]
Yet another great article about local.xml, thanks!
Doing different things for logged in vs. not logged in users – not every Magento developer know about this, really very useful handles.
Really Kool tips/tricks. Keep up the great work.
[...] I do it using my local.xml as outlined in my previous article. However, it would be good practice if module developers would provide the option right from their [...]
Excellent Article. Came to know about local.xml for the first time.
[...] the styling and don’t want to add bulk to my site.Traditionally, I do it using my local.xml as outlined in my previous article. However, it would be good practice if module developers would provide the option right from their [...]
It is not working in my case, when i am trying to remove this
how can i remove top line through using local.xml
can you please let me know or
am i making any mistake?
i don’t know why is my code is not display in my comment but problem is i want to remove top link.
@vijay Please see the instructions below the comment box on how to paste code in your comments. You need to put your code between the code tags as described.
Big thx Robert, finaly i got solution……….
Big thx Robert, finaly i got solution……..:)
and Great Article as well…
I also visited http://magebase.com/magento-tutorials/starting-a-new-design-package-and-theme-in-magento/ article. It looks like you are trying to create new theme copying existing theme so that in future, if theme gets upgraded, it wont override your changes. So if we are having new package then we can do whatever we like in available layout from the copied package. In this case, why do we need to create local.xml as layout if we are not doing anything more than default magento layout does?
If you’re not changing anything in the layout, you don’t need to create a local.xml
Local.xml is recommended for WHEN you want/need to change the default layout which, really, is most of the time when implementing a custom design.
By the way, the article you refer to shows how to create a new package and copy one of the supplied themes as the ‘default’ theme. This still means that you shout NOT modify the files in that copied theme since you will need to overwrite those files after an upgrade anyway. If you noticed, we create a ‘master’ theme where we do our actual theme customizations and that is where we should use the local.xml.
The only problem with adding the jQuery from CDN as a block is that it gets thrown into the header AFTER the Magento layout Engine inserts the calls to . Is there a parameter to load a block before the addJs? All jQuery scripts need to be called in the footer with this technique otherwise.
Looking at base/default/templates/page/html/head.phtml:
<?php echo $this->getCssJsHtml() ?> <?php echo $this->getChildHtml() ?> <?php echo $this->helper('core/js')->getTranslatorScript() ?> <?php echo $this->getIncludes() ?>You could override head.phtml in your design and rearrange the getChildHtml() call to be before the getCssJsHtml() or if that interferes with something else, then you’ll need to find another solution.
just found this solution and tried using it. I ran into the same problem Lane mentioned and tried Robert’s solution the problem is it created an issue where getChildHtml was loading the phtml file with javascript it in for setting the Mage cookie before the Mage namespace was available.
The easiest solution to this is to add in Roberts script inside head.phtml
To do so, copy the defalt head.phtml into your theme and right above: “php echo $this->getCssJsHtml() ”
insert: “[CDATA[jQuery.noConflict();]]”
result will look like this:
Correction to my previous post as CDATA isn’t required in non xml files the output in head.phtml should look like this:
Thank you for your your great article. I’ve been trying to show 6 upsell products on the product page, so your “3. Changing default block parameters” helped me a lot. But I tried as below but it doesn’t work. Only 4 upsell products are shown there. Can you please help me if you have any ideas?
Thank you.
I got a solution by myself.
Thanks !
What is the preferred method to move the ENTIRE footer or Header? Referring to the modern template structure, I want to be able to move both the header-container and the footer-container div outside the page div.
You’re talking about a structural HTML change which you will need to perform in the phtml files under page/*column*.phtml
Do you know if the customer_logged_in and customer_logged_out handles are still available in ver 1.6 CE?
I’m pretty sure that they are. It’s one of the more essential handles so I doubt it will be removed.
I’m trying to use it for a mini.login block in the right sidebar. I’m using this in my local.xml which works:
But it stays there even after a successful login. So I’ve wrapped it with the customer_logged_out handles, but it doesn’t display. Any ideas would be greatly appreciated.
Hi Rodney
This works for me:
<customer_logged_out> <reference name="right"> <block type="customer/form_login" name="mini_login" template="customer/form/mini.login.phtml" /> </reference> </customer_logged_out>Do you have your reference name=”right” node wrapped in any other node (such as <default>)?
Yes. I have it inside the default node with my other references. I matched my code up with yours and they are identical. I don’t want to waste your time, but here’s my local.xml without the logged out handle that works: http://pastebin.com/MwVkyUCq
And here is the same with the handle that doesn’t work: http://pastebin.com/gPpSSE3C
Maybe some fresh (and much more experienced) eyes will be able to see something I’m missing. Thanks.
Yeah, you have to pull it out from the <default> node. The <customer_logged_out> is a top level node and should not be enclosed in any other nodes.
So just copy and paste my code AFTER your closing default element as a top level element and Bob’s you mother’s brother.
Wow! You rock!
And I have to say thank you for all the other times you’ve helped me. Searching for magento answers, your posts come up a lot. Thanks again!
Glad it worked out for you. Thanks for the kind words
.
^!&@%#$^&!%$# THANK YOUUU!!!! I’ve been trying to solve this for a month!
Nice article! Looks way easier than adjusting all the separate files. Thanks!
[...] to set the default sort direction for the toolbar, you can do this via the layout XML. Best in your local.xml but you can edit catalog.xml if your theme has overridden [...]
Great Article, I like this approach a lot and made modifications to the top links removing a faulty wishlist link that shows up for some reason and adding the correct wishlist link only for logged in customers.
Everything works fine until I switch one the cache then the removal of the faulty wishlist link doesn’t work anymore. I have refreshed/reloaded and manually removed cahce files from var/cache/. Most of the local.xml modifcations works fine it’s just thins one removal that doesn’t play with the cache, any ideas?
cheers,
Mattias
I’m not sure exactly what would be the cause of your issue. I know that the header and footer blocks are somewhat more persistent in the Magento cache so your subsequent removal of your wishlist link may not work correctly. Do you also have APC set up as part of your caching strategy? Maybe you need to clear the APC cache manually as well?
If none of this works, you may need to find the place where the faulty wishlist link is added (usually wishlist.xml) and override that layout file explicitly. Also it looks like the standard wishlist is added using the addLinkBlock() method from the wishlist/links block class so this could be your starting point to look at.
” operates on a localized context, specifically, in the context where you use it. So, if you want to remove a specific block from a specific layout handle and possibly insert it at another position or layout handle, you need to use this approach. ”
For noobs like me could you be a little more clear in the phrase above ? What do you mean “localized” / “context where you use it” (use who exactly?). What approach are you refering to exactly ?
@SS
“localized context” means that the directives act only on the specified reference name within the layout handle so, if you are modifying:
then the directives:<reference name="product.info"> <action method="unsetChild"> <name>info_tabs</name> </action> </reference>will remove the
info_tabsblock at the point of parsing, so if you subsequently add a block with the same name (as in the example in the article) that block will show up. Using<remove name="info_tabs" />will be executed at the end of parsing so, any subsequently added blocks with the same name will also be removed.By approach I mean that if you want to only remove layout blocks, you can use the remove name=”…” directive and if you want to change layout blocks, then you should use the action method=”unsetChild” directive.
Thank you, excellent info.
I’m running a multi-store installation so I’ve extended the Mage_Core_Model_Layout_Update to have it load an extra XML for each store after the local.xml. This way I can do global changes in local.xml and store specific changes in the store specific XML, (in my case the naming convention is: 1,xml, 2,xml, 3,xml…).
Basically I insert this line into getFileLayoutUpdatesXml :
I’ve been trying to remove the “My Cart” link in top.links and nothing I have found is working for Enterprise Edition of Magento. In my local.xml file I have:
which have removed everything but this last item. This is the last of all the top.link items that I am trying to remove.
Your code didn’t post. I am using the following in my local.xml:
in
add
<reference name="root"> <reference name="top.links"> <!-- Removes 'My Account' link - Default position: 10 --> <action method="removeLinkByUrl"><url helper="customer/getAccountUrl"/></action> <remove name="checkout_cart_link"/> </reference> </reference>This works perfectly for me.
Note for anyone looking later. My comment refers to CE. Robert’s code below is for EE
@Teesable You need to enclose your code with code tags as explained below or use pastebin.com or similar.
http://pastebin.com/BDZtmpJL
Enterprise doesn’t use the standard magento cart link, it implements the drop-down minicart instead as can be seen in the checkout.xml from the EE 1.11 edition:
<reference name="checkout.links"> <block type="checkout/links" name="checkout_cart_link"> <!-- <action method="addCartLink"></action> --> <action method="addCheckoutLink"></action> </block> </reference> <reference name="header"> <block type="checkout/cart_sidebar" name="cart_sidebar" as="topCart" template="checkout/cart/cartheader.phtml"> <action method="addItemRender"><type>simple</type><block>checkout/cart_item_renderer</block><template>checkout/cart/sidebar/default.phtml</template></action> <action method="addItemRender"><type>grouped</type><block>checkout/cart_item_renderer_grouped</block><template>checkout/cart/sidebar/default.phtml</template></action> <action method="addItemRender"><type>configurable</type><block>checkout/cart_item_renderer_configurable</block><template>checkout/cart/sidebar/default.phtml</template></action> <block type="core/text_list" name="topCart.extra_actions" as="extra_actions" translate="label" module="checkout"> <label>My Cart Extra Actions</label> </block> </block> </reference>If you are referring to that block then you need to:
Also, no need to repeat your
defaultblock for each remove line, you can put them all together as Joel outlined.Thank you. That did the trick.
Hello, first, thanks for the nice useful tutorial. I’m wondering if you may help me:
From the CMS, I’ve created and added a widget of recently viewed products to the products pages and set it to show up to 6 products using the grid view. So far so good, but now, how can I change the number of columns per row?
Thanks.
Hi Robert,
I am having problem adding/removing js/css.
I have followed the procedure as enumerated by you.
I am working with custom theme package=>theme name
Am I making a mistake.
Regards
Without knowing what exactly you did, I can’t comment. Please supply code (check below comment box for correct syntax) or more details.
Hi Robert,
Thanks for reply and your time.
Actually I am a new to Magento and I want to develop a custom theme. However, I am able to make a static frontend but as far as dynamic frontend is concerned, I am stuck for instance as the top links like My Account etc. are not landing to their pages as per their url and how to co-relate xml with phtml in custom theme. I know I am pointing to a big picture here but that is what I am trying to figure out. Can you help me. I just want a little help so I haven’t given any code. Can I achieve it with just local.xml? if yes then how? I tried but no avail.
Thanks for your valuable time.
Regards
In that case you may want to read the Demystifying Magento’s Layout XML articles on this blog. You can get more in-depth information about how the layout XML correlates to the phtml and understand how to use that knowledge to manipulate your layout via local.xml.
Dear Robert,
Thanks for the great tutorial. I have a multi-store [multi sub domain] running Magento CE v1.7 and would like to remove the topLinks from two stores.
I did make use of the
{<action method="unsetChild">}in the local.xml but I could not get this to work.
This is the code I did:
{<layout> <top_links> <reference name="header"> <action method="unsetChild"> <name>topLinks</name> </action> </reference> </top_links> <STORE_store> <update handle="top_links" /> </STORE_store> <STORE_law> <update handle="top_links" /> </STORE_law> </layout>}But I cannot see it making a change. Also I would like guidance how can I make the product page load a js via the local.xml as I am stuck.
With best regards
Fabian
To make the product page load additional javascript, you can use the
<catalog_product_view>handle:<catalog_product_view> <reference name="head"> <action method="addItem"><type>skin_js</type><name>js/myproductpage.js</name></action> </reference> </catalog_product_view>As far as your first question goes, I’m not sure why it’s not working. Have you tried using:
<layout> <STORE_store> <reference name="header"> <action method="unsetChild"> <name>topLinks</name> </action> </reference> </STORE_store> <STORE_law> <reference name="header"> <action method="unsetChild"> <name>topLinks</name> </action> </reference> </STORE_law> </layout>Also, don’t forget to refresh the layout cache if cache is enabled.
Robert,
Thanks for your input. With your method of just unsetting the topLinks for the particular stores vs. the one I did to unset toplinks in general and activate the toplinks for the desired stores, just worked fine
Thanks for the other tip as well
Great article! This will help a lot for my theme development. Thanks!
Great tutorial, Im new to Magento so Ive found it very hand.
Very useful article, especially point 2 in the article to reference external js files in local.xml.