我需要对从标准 Magento 顶级导航显示的子导航进行一些重大编辑。
我已经进入 top.phtml 并发现它在核心 Mage 代码中调用了一个函数,是否可以在调用之前在我的主题中运行一个文件,或者我是否必须创建一个完全自定义的导航/使用扩展?
我需要对从标准 Magento 顶级导航显示的子导航进行一些重大编辑。
我已经进入 top.phtml 并发现它在核心 Mage 代码中调用了一个函数,是否可以在调用之前在我的主题中运行一个文件,或者我是否必须创建一个完全自定义的导航/使用扩展?
总是非常欢迎您简单地design/frontend/[package]/[theme]/catalog/navigation/top.phtml
用您自己的标记替换模板,然后您可以随意迭代。
Block 类已经提供了一些基本方法,可用于按照您的喜好构建导航菜单,例如getStoreCategories()
、isCategoryActive()
、getCurrenetChildCategories()
等。
或者,正如 Peter 所提到的,您可以重写 Block 类以更改特定方法或包含您自己的方法,然后可以从模板文件中访问这些方法。
要覆盖Mage_Catalog_Block_Navigation
:
在app/etc/modules/Yourmodule_Catalog.xml
:
<?xml version="1.0"?>
<config>
<modules>
<Yourmodule_Catalog>
<active>true</active>
<codePool>local</codePool>
<depends />
</Yourmodule_Catalog>
</modules>
</config>
在app/code/local/Yourmodule/Catalog/etc/config.xml
:
<?xml version="1.0"?>
<config>
<modules>
<Yourmodule_Catalog>
<version>0.1.0</version>
</Yourmodule_Catalog>
</modules>
<global>
<blocks>
<catalog>
<rewrite>
<navigation>Yourmodule_Catalog_Block_Navigation</navigation>
</rewrite>
</catalog>
</blocks>
</global>
在app/code/local/Yourmodule/Catalog/Block/Navigation.php
:
<?php
class Yourmodule_Catalog_Block_Navigation extends Mage_Catalog_Block_Navigation
{
.... the methods you want to override...
}
就是这样。