我需要對從標準Magento頂級導航顯示的子導航進行一些主要編輯。Magento:編輯頂級導航子導航結構
我進入了top.phtml,發現它調用了核心法師代碼中的函數,在調用這個函數之前是否可以在我的主題中運行一個文件,或者是否必須創建一個完全自定義的導航/使用擴展名?
我需要對從標準Magento頂級導航顯示的子導航進行一些主要編輯。Magento:編輯頂級導航子導航結構
我進入了top.phtml,發現它調用了核心法師代碼中的函數,在調用這個函數之前是否可以在我的主題中運行一個文件,或者是否必須創建一個完全自定義的導航/使用擴展名?
要覆蓋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>
在:
<?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...
}
就是這樣。
你總是樂意用你自己的標記替換design/frontend/[package]/[theme]/catalog/navigation/top.phtml
模板,然後你可以隨心所欲地進行迭代。
Block類已經提供了可用於構建您的導航菜單你喜歡它的一些基本方法,如getStoreCategories()
,isCategoryActive()
,getCurrenetChildCategories()
等
另外,由彼得所說,你可以重寫Block類來更改特定的方法或包含您可以從模板文件訪問的自己的方法。
你以前的文件是什麼意思?你能給我一個你想要做什麼的例子嗎? – Andrew 2013-02-26 13:27:04
由於Mage_Catalog_Block_Navigation類及其某些功能,因此顯示菜單。您可以創建自己的模塊來擴展該模塊並根據需要進行調整。 – dagfr 2013-02-26 13:28:17
我有多少控件可以擴展它?我認爲這是一種選擇,但從我所見到的方法來看,它是相當封閉的。 /但我最想要的是知道我需要放置這個文件的副本(比如製作主題時),而不是標準。 – 2013-02-26 15:07:20