2011-08-06 9 views

答えて

2

catalog.topnavのレイアウトエントリは次のとおりです。これは、我々はMage_Catalog_Block_Navigation(おそらく)ブロックのクラスを使用していると我々はテンプレートファイルcatalog/navigation/top.phtmlを使用している意味

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

テンプレートファイルでは、メニューのレンダリングはrenderCategoriesMenuHtml()メソッドによって実行されることがわかります。

app/code/core/Mage/Catalog/Block/Navigation.phpでそのメソッドの実装を見てみると、ストアのアクティブなカテゴリをループすることで表示されます。

このように、レイアウトの更新によって、そのファイルに追加することはできません。


あなたが言うように、page/template_linksと呼ばれる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> 

:私の推薦は、のようなものにXMLを変更するだろうpage/template_linksブロックはラッピングを含み、デフォルトとしてpage/template/links.phtmlテンプレートを使用しています

<?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 ?> 

<ul> 。既にcatalog/navigation/top.phtmlテンプレート内にある<ul>内のリンクを含める場合は、template=""属性を使用してpage/template_linkブロックに別のテンプレートを設定して、<ul>なしで独自のリンクテンプレートを作成することができます。

+0

あなたのコメントを補足するだけで、テンプレートを変更して、 'addLink'機能をどのように拡張するかについてのガイドがあります。 http://www.sonassi.com/knowledge-base/magento-kb/nested-xml-menus-using-addlink-in-magento/を参照してください。 –

関連する問題