2011-08-06 41 views
1

在Magento将链接添加到catalog.topnav是否有可能链接在Magento通过布局更新添加到目录导航 - 几乎相同的方式,你可以使用addLink方法顶部链接和页脚链接等通过布局更新

回答

2

catalog.topnav布局条目是:

<block type="catalog/navigation" name="catalog.topnav" template="catalog/navigation/top.phtml"/> 

这意味着我们正在使用的块级Mage_Catalog_Block_Navigation(可能),我们正在使用的模板文件catalog/navigation/top.phtml

在模板文件中我们看到,菜单的绘制是通过renderCategoriesMenuHtml()方法来执行。

如果我们看一看该方法的app/code/core/Mage/Catalog/Block/Navigation.php实现中,我们看到,它是通过商店的活跃类别循环填充。

所以,开箱即用的,没有你不能完全通过了布局更新添加到该文件。


正如你所说,已经有支持添加通过名为page/template_links的XML链接块类。我的建议,将修改XML喜欢的东西:

<block type="catalog/navigation" name="catalog.topnav" template="catalog/navigation/top.phtml"> 
    <block type="page/template_links" name="catalog.topnav.links" as="additional_links"> 
     <action method="addLink"> 
       <label>Our Boutiques</label> 
       <url>boutiques</url> 
       <title>Our Boutiques</title> 
       <prepare>true</prepare> 
       <urlParams helper="core/url/getHomeUrl"/> 
       <position>1</position> 
       <liParams/> 
     </action> 
    </block> 
</block> 

然后模板文件更改为类似:

<?php $_menu = $this->getLayout()->createBlock('catalog/navigation')->renderCategoriesMenuHtml(0,'level-top') ?> 
<?php if($_menu): ?> 
    <div class="nav-container"> 
     <ul id="nav"> 
      <?php echo $_menu ?> 
     </ul> 
     <?php echo $this->getChildHtml('additional_links') ?> 
    </div> 
<?php endif ?> 

page/template_links块使用page/template/links.phtml模板作为默认它包括一个包裹<ul> 。如果你想包括<ul>这是已经在catalog/navigation/top.phtml模板,你可以使用template=""属性设置page/template_link块不同的模板,并没有<ul>创建自己的模板,链接中的链接。

+0

只是为了补充您的评论,有一个有点指南在这里你可以如何改变模板和扩展'addLink'功能。请参阅http://www.sonassi.com/knowledge-base/magento-kb/nested-xml-menus-using-addlink-in-magento/ –