[英]Overwriting Mage_Page_Block_Html_Topmenu via module in Magento
我为此付出了更多的时间,而不是现在想承认的时间。
创建一个模块来更改Magento的Topmenu中存在的类。
app/etc/modules/Issl_Topmenu.xml
<?xml version="1.0"?>
<config>
<modules>
<Issl_Topmenu>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Catalog/>
<Mage_Page/>
</depends>
</Issl_Topmenu>
</modules>
</config>
app/code/local/Issl/Topmenu/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Issl_Topmenu>
<version>0.0.1</version>
</Issl_Topmenu>
</modules>
<global>
<blocks>
<page>
<rewrite>
<html_topmenu>Issl_Topmenu_Block_Page_Html_Topmenu</html_topmenu>
</rewrite>
</page>
</blocks>
</global>
</config>
app/code/local/Issl/Topmenu/Block/Page/Html/Topmenu.php
<?php
/**
* Topmenu navigation
*
* Update classes on the Topmenu navigation to be more in-keeping with style guides.
*
* @category ISSL
* @package ISSL_Topmenu
* @author ISSL <www.issl.co.uk>
*/
class Issl_Topmenu_Block_Page_Html_Topmenu extends Mage_Page_Block_Html_Topmenu {
/**/
}
纳达。 它不会使页面崩溃,但也不会更改模板。 我确认该模块已在“ System->Configuration->Advanced
下加载并启用,并且缓存已完全禁用。
问题显然是愚蠢的-我要去哪里错了?
要对现有基类执行简单的覆盖,只需将类复制到本地代码池内的相同路径,然后在此处进行自定义:
从:
app\code\core\Mage\Page\Block\Html\Topmenu.php
至:
app\code\local\Mage\Page\Block\Html\Topmenu.php
文件:
class Mage_Page_Block_Html_Topmenu extends Mage_Core_Block_Template
{
// code..
public function getHtml($outermostClass = '', $childrenWrapClass = '')
{
// my custom code
永远记得刷新缓存。
事实证明,该模块可以正常工作,但是修改Topmenu令人痛苦,而不是像以前那样简单(不再),我使用的功能已经过时,出于我的目的,创建自己的功能可能更简单模板。 非常感谢弗拉基米尔(Vladimir)帮助我深入了解了这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.