如果我是對的,在Magento renderCategoriesMenuHtml()
函數有助於在導航菜單欄中顯示「類別包括」菜單。類別菜單「不包含在導航欄中」
我想修改renderCategoriesMenuHtml()函數以顯示「不包括在導航菜單欄中的類別」菜單。
總之,我需要顯示具有屬性"Include in navigation menu"
設置爲在管理面板沒有類別的菜單。
在此先感謝。
如果我是對的,在Magento renderCategoriesMenuHtml()
函數有助於在導航菜單欄中顯示「類別包括」菜單。類別菜單「不包含在導航欄中」
我想修改renderCategoriesMenuHtml()函數以顯示「不包括在導航菜單欄中的類別」菜單。
總之,我需要顯示具有屬性"Include in navigation menu"
設置爲在管理面板沒有類別的菜單。
在此先感謝。
Magento有一個工具可以改變或增加被稱爲類覆蓋或類重寫的類的功能。以下示例假定名稱空間爲「Custom」,模塊名稱爲「Nav」。
首先,註冊一個模塊:
<?xml version="1.0" encoding="UTF-8"?>
<!-- app/etc/modules/whatever.xml -->
<config>
<modules>
<Custom_Nav><!-- must match your namespace & module folder names -->
<active>true</active>
<codePool>local</codePool>
</Custom_Nav>
</modules>
</config>
基於上述,應用程序會尋找你的模塊配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!-- app/code/local/Custom/Nav/etc/config.xml -->
<config>
<global>
<blocks>
<catalog>
<rewrite>
<navigation>Custom_Nav_Block_Rewrite_Navigation</navigation>
</rewrite>
</catalog>
</blocks>
</global>
</config>
這樣做是重寫類名在塊創建工廠方法中。目錄導航塊添加到catalog.xml
佈局更新XML(<block type="catalog/navigation" .../>
)中。上面的xpath將導致類名映射到Custom_Nav_Block_Rewrite_Navigation
而不是通常的Mage_Catalog_Block_Navigation
,它是這個類將被實例化。
的最後一步是創建類的定義,從原來的類可維護性的緣故延伸和遵守DRY:
<?php
/* app/code/local/Custom/Nav/Block/Rewrite/Navigation.php */
class Custom_Nav_Block_Rewrite_Navigation extends Mage_Catalog_Block_Navigation
{
//custom method overrides & additions belong here
}
清除配置& block_html高速緩存和變化應該是可見的。爲了驗證,通過管理面板使模板路徑提示+塊類名稱,或在網站根目錄創建一個簡單的腳本:
<?php
/* test.php in Magento root folder */
ini_set('display_errors',true);
include 'app/Mage.php';
Mage::setIsDeveloperMode(true);
Mage::app();
var_dump(Mage::getConfig()->getBlockClassName('catalog/navigation'));
瀏覽器指向http://site.com/test.php
和輸出應該顯示改寫類的名稱。