簡體   English   中英

Magento - 擴展Topmenu.php塊會停止topmenu.phtml模板加載

[英]Magento - Extending Topmenu.php block stops the topmenu.phtml template loading

我正在使用以下xml擴展app / code / core / Mage / Page / Block / Html / Topmenu.php:

<config>
    <modules>
        <Custom_Menu>
            <version>1.0</version>
        </Custom_Menu>
    </modules>
    <global>
        <blocks>
            <page>
                <rewrite>
                    <html_topmenu>Custom_Menu_Block_Page_Html_Topmenu</html_topmenu>
                </rewrite>
            </page>
        </blocks>
    </global>
</config>

而我的班級定義:

class Custom_Menu_Block_Page_Html_Topmenu extends Mage_Page_Block_Html_Topmenu
{

}

即使我的類沒有覆蓋任何方法,以下模板文件也不會被處理:

app/design/frontend/base/default/template/page/html/topmenu.phtml

我沒有覆蓋模板文件。

一旦我禁用我的模塊,它就會重新開始工作。

我是否需要在xml文件中聲明其他內容?

在config.xml文件中進行此更改

<html_topmenu>Custom_Menu_Block_Html_Topmenu</html_topmenu>

並將您的班級名稱更改為

class Custom_Menu_Block_Html_Topmenu extends Mage_Page_Block_Html_Topmenu
{

}

有一件事讓人想起。 您可能將您的類文件放在錯誤的位置。 您的重寫代碼看起來是正確的,因此當Magento實例化一個page/html_topmenu塊時,它會正確地將其解析為您的Custom_Menu_Block_Page_Html_Topmenu類名。 但是,Magento可能無法找到Custom_Menu_Block_Page_Html_Topmenu類。 嘗試運行代碼

$block = new Custom_Menu_Block_Page_Html_Topmenu;
var_dump($block);

從空控制器和/或引導程序文件,以確保Magento可以找到您的類。 跑步也不會有害

$block = Mage::getSingleton('core/layout')->createBlock('page/html_topmenu');
var_dump($block);

確保您的重寫正在執行它需要做的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM