2016-09-13 70 views
1

我想通過添加自定義類,通過覆蓋app/code/core/Mage/catalog/Block/Navigation.php來創建magento 1.9.2中的自定義頂級菜單。 我創建了一個上有在magento 1.9.2中創建自定義頂級菜單

應用程序的/ etc /模塊這下面的文件邁上了一個新地方推廣/ Customnav_Catalog.xml

<?xml version="1.0"?> 
<config> 
    <modules> 
<Customnav_Catalog> 
    <active>true</active> 
    <codePool>local</codePool> 
    <version>0.1.0</version> 
</Customnav_Catalog> 
    </modules> 
</config> 

應用程序/代碼/本地/ Customnav /目錄下的/ etc/config.xml中

<?xml version="1.0"?> 
<config> 
<modules> 
    <Customnav_Catalog> 
     <version>0.1.0</version> 
    </Customnav_Catalog> 
</modules> 
<global> 
    <helpers> 
     <Customnav_Catalog> 
     <class>Customnav_Catalog_Helper</class> 
     </Customnav_Catalog> 
    </helpers> 
    <blocks> 
     <Customnav_Catalog> 
      <class>Customnav_Catalog_Block</class> 
     </Customnav_Catalog> 
     <Customnav_Catalog> 
      <class>Customnav_Catalog_Block</class> 
      <rewrite> 
       <navigation>Customnav_Catalog_Block_Catalog_Navigation</navigation> 
      </rewrite> 
     </Customnav_Catalog> 
    </blocks> 
</global> 
</config> 

應用程序/代碼/本地/ Customnav /目錄/助手/ Data.php

class Customnav_Catalog_Helper_Data extends Mage_Core_Helper_Abstract {} 

應用程序/代碼/本地/ Customnav /目錄/座/ Navigation.php

此功能_renderCategoryMenuItemHtml我加入這行代碼添加新的類,但不通過Magento的認識

$classes[] = 'nav-item '; 

我裏面喜歡將其他引導類添加到Navigation.php。

我是否正確覆蓋了Navigation.php?

是否有其他方法來定製頂級菜單?

回答

0

不,你沒有。要正確覆蓋Mage_Catalog_Block_Navigation,您需要將重寫置於該特定塊配置中。因此,而不是:

<blocks> 
    <Customnav_Catalog> 
     <class>Customnav_Catalog_Block</class> 
    </Customnav_Catalog> 
    <Customnav_Catalog> 
     <class>Customnav_Catalog_Block</class> 
     <rewrite> 
      <navigation>Customnav_Catalog_Block_Catalog_Navigation</navigation> 
     </rewrite> 
    </Customnav_Catalog> 
</blocks> 

你應該寫:

<blocks> 
    <Customnav_Catalog> 
     <class>Customnav_Catalog_Block</class> 
    </Customnav_Catalog> 
    <catalog> 
     <rewrite> 
      <navigation>Customnav_Catalog_Block_Catalog_Navigation</navigation> 
     </rewrite> 
    </catalog> 
</blocks> 

上面的代碼「告訴」的confguration如果Mage::app()->getLayout()->createBlock('catalog/navigation')被稱爲(例如)它不應該返回原來的塊,但塊如重寫規則(這是你的)所述。

+0

謝謝@Giel Berkers的回答。 navigation.php上的任何自定義似乎都沒有效果。我試圖操縱核心文件進行調試,但仍然沒有發生變化。 Magento 1.9.2是否使用了Navigation.php? – rodge

+0

如果編輯核心文件沒有造成任何破壞,是否有不同的模塊也在嘗試重寫'Mage_Catalog_Block_Navigation'?如果你在你的'navigation.phtml'模板文件中放入'echo get_class($ this)',它會說什麼? –

相關問題