重載Magento裏adminhtml的controller

magento的model類和block類的重載都不難,直接複製一個,按照相同的目錄格式放到local下就可以了。

但是重載controller和config文件就非常麻煩了。

關於重載普通的controller可以參照這篇官方wiki文章
www.magentocommerce.com/wiki/how_to_overload_a_controller

而重載adminhtml的controller就最好用我的這種方法

例如重載adminhtml裏sales/order裏的controller,我是這樣做的。

首先要注意的是,所有文件夾和文件的名字,都是大小寫敏感的,否則在linux環境下會失效。


1.先創建自己的module,例如名字叫xxx,命名空間叫yyy。新建local下的yyy/xxx文件夾,裏面新建一個etc文件夾,和controllers文件夾。
目錄結構是
app/local/yyy/xxx/controllers

app/local/yyy/xxx/etc

2.在app/etc/Modules裏新建一個叫yyy_All.xml的文件.內容填

<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<yyy_xxx>
<active>true</active>
<codePool>local</codePool>
</yyy_xxx>
</modules>
</config>

3.在app/local/yyy/xxx/etc裏新建一個名字叫config.xml的文件,內容填

<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<yyy_xxx>
<version>0.1.0</version>
</yyy_xxx>
</modules>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<yyy_xxx before="Mage_Adminhtml">yyy_xxx</yyy_xxx>
</modules>
</args>
</adminhtml>
</routers>
</admin>
</config>

4.在app/local/yyy/xxx/controllers裏,按照要重載的controller的目錄結構,放置同名的controller,例如我要重載sales/order/createcontroller,我就弄成這樣的目錄結構並新建php文件如下
app/local/yyy/xxx/controllers/Sales/Order/CreateController.php

5.controll類文件裏的內容,直接extend要重載的controller文件就可以了。例如

include("Mage/Adminhtml/controllers/Sales/Order/CreateController.php");
class yyy_xxx_Sales_Order_CreateController extends Mage_Adminhtml_Sales_Order_CreateController
{
}


最後,刪除var/cache裏的東西,就生效的了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章