2010-11-08 122 views
2

我想修改在管理界面和PDF生成代碼訂單/銷售表的代碼,而無需在core目錄alterting的文件。我該怎麼做呢?我明白,我要創建一個使用我想覆蓋文件相同的路徑一個新的模塊,但我不知道還有什麼我必須做的......有沒有一些特殊的措施來補辦的​​3210模塊??如何覆蓋Magento Core模塊?

回答

6

如果你想這樣做在一個單獨的模塊,你應該把你的新模式(塊,輔助性或者任何你需要重寫 - 我將要使用的模型爲例,其同爲別人 - 只有控制器是完全不同的)在'Model'目錄中(例如:code/local/MyNamespace/MyModule/Model/Sales/Order.php)。在你的模塊config.xml中你應該增加:

<global> 
(...) 
    <models> 
    (...) 
    <sales> 
     <rewrite> 
     <order>MyNamespace_MyModule_Model_Sales_Order</order> 
     </rewrite> 
    </sales> 
    </models> 
(...) 
</global> 

當然你自己sales_order的模型應該從核心一個繼承。這是覆蓋Magento核心功能的最乾淨的方式(可能除了事件,但他們不能做所有事情)。

0

創建要在模塊本地文件夾修改的匹配目錄和文件。這應該是所有需要的。

0

由於mcmil正確地指出的那樣,在自己的命名空間創建一個模塊,並從核心類擴展。通過這樣做,您可以編寫更少的代碼並創建更少的代碼。它還可以改善您未來的升級途徑。

如果只是整個文件從應用程序/代碼/核心拷貝到應用程序/代碼/本地,然後將核心文件/類獲取在未來的Magento更新,你可能會錯過這些的改變而改變。如果您正在使用模塊從核心類擴展,那麼當您更新Magento時,您的新類將繼承這些更改。