If you have ever needed to have a category link point to a Magento CMS page, I am sure that you are aware that there are a few different ways that you can go about doing this. Here are three of the methods that I prefer to use in order to link a category menu link to a CMS page in Magento.
Edit the topmenu.phtml
If you are a Magento developer with access to the files via Secure File Transfer Protocol (SFTP) or a git repository, add the menu item by overriding /app/design/frontend/base/default/template/page/html/topmenu.phtml in your own theme.
After you copy this file into your custom theme(if this file already exists in your custom theme, you can just edit the existing file as there is no need to copy the base version), simply edit it and add the link you want before or after the Magento generated menu code and give it the relative path to CMS page (This is from a base install of Magento CE 220.127.116.11.):
<nav id="nav"> <ol class="nav-primary"> <?php echo $_menu ?> </ol> </nav>
<nav id="nav"> <ol class="nav-primary"> <li><a href='/' alt='My SIte'>Home</a></li> <?php echo $_menu ?> <li><a href='/about-us' alt='About Us'>About Us</a> </li> </ol> </nav>
If you don’t see your change right away, make sure you have disabled or cleared your Magento cache. Note – you may also have to modify your css to get the menu items to display properly.
Add a category in Catalog -> Manage Categories and link it to a static block
If you are not a Magento developer or you do not have access to the files, the best way to add a link to the category menu is to create content in a static block, instead of a CMS page, and then associate it with a category. This method is by far the simplest way to achieve the desired goal, and I prefer this over any other method on this page.
After you have created your CMS block, add a new category and place it where you want it in the category menu. Add the name of the menu item, set it as active, and include it in the navigation menu.
On the Display settings:
Set ‘Display Mode’ to Static Block Only
Set CMS block to the static block with the content that you want displayed
Set “Is Anchor” to No.
Click the Save Category button.
And that’s it. Reload home page. The new menu item will be there. – About Us in this case. Once again, if you don’t see your change, make sure that your old page is not cached.
The URL Rewrite Method:
A less preferred and more involved method is to create a category item, and then use Magento’s URL rewrite system to change the URL for the category to point to a CMS page. Daniel Morales shows us how to do that on Template Monster:
http://www.templatemonster.com/help/magento-adding-page-links-in-the-navigation-bar.html I would not suggest using this method, due to its somewhat inconsistent behavior. Sometimes the URL rewrites disappear after the site reindexes, other times the rewrites stay in place. However, if you have no other option, then this is the solution for you. I would recommend testing it a few times, and manually reindexing the site to confirm that the rewrites stay in place.
Adding a menu item to link to a CMS page in a Magento website is a much needed function. Magento offers the flexibility to allow this change to be done easily, either by a developer or non-developer. There are other methods available that are not listed here. For example: Using XML to add a CMS page to the topmenu. The reason why I chose not to list that method here is because it is layout specific, and generally only works on “out of the box” code. That being said, please feel free to choose the way that works best for your situation.