我想修改管理界面中的Order / Sales表的代码和PDF生成代码,而不需要更改core
目录中的文件。我该怎么做呢?我知道我必须创建一个新模块,它使用与我想要覆盖的文件相同的路径,但我不确定我还需要做什么...是否有一些特殊的步骤来完成{{ 1}}模块??
答案 0 :(得分: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核心功能的最干净的方法(可能除了事件,但他们不能做所有事情)。
答案 1 :(得分:0)
在模块的本地文件夹中创建要修改的匹配目录和文件。这应该是所有需要的。
答案 2 :(得分:0)
正如mcmil正确指出的那样,在您自己的命名空间中创建一个模块并从核心类扩展。通过这样做,您可以编写更少的代码并减少膨胀。它还将在未来改善您的升级路径。
如果您只是将整个文件从app / code / core复制到app / code / local,然后在下一个Magento更新中更改核心文件/类,您可能会错过这些更改。如果您使用模块从核心类扩展,那么新类将在您更新Magento时继承这些更改。