将所有核心文件覆盖到Magento中的本地文件

时间:2013-04-04 05:08:32

标签: magento

我希望将我的magento版本从1.5升级到1.7.0.2。但我以前的团队成员已在许多核心文件中完成了代码。所以很难升级。为此,我们决定将所有文件从核心复制到具有相同文件夹结构的本地,以覆盖

/app/code/core/Mage/Sales         to /app/code/local/Mage

/app/code/core/Mage/Backup        to /app/code/local/Mage

/app/code/core/Mage/Catalog       to /app/code/local/Mage

/app/code/core/Mage/CatalogSearch to /app/code/local/Mage

/app/code/core/Mage/Checkout      to /app/code/local/Mage

/app/code/core/Mage/Contacts      to /app/code/local/Mage

/app/code/core/Mage/Reports       to /app/code/local/Mage

这是正确的方法吗? 这会影响Magento网站的性能吗?

5 个答案:

答案 0 :(得分:4)

最好使用观察者和类重写而不是核心修改(无论是直接修改还是通过包含路径)是因为很少需要覆盖整个类定义。虽然后面的方法只是更痛苦/更多的工作,无论先前的自定义如何实现,您必须将过去的更改与新功能合并 。任何软件升级都是如此。

做一名专业人士:针对vanilla 1.5.x.x代码库运行差异,并尽可能地将更改合并到核心。至少只移动到 app / code / local / Mage / 那些已经显着改变或者是超类的类,然后将它们与1.7.0.2版本区分开来以完成合并。

请注意,核心中已更改的任何资源模型(通常位于 Mysql4 文件夹下)必须通过重写或移植到其资源进行调整 -path对应物。

答案 1 :(得分:0)

您可以执行以下操作:

/ app / code / core / Mage / Sales to / app / code / local / ProjectName / Rewrites /

你的结构可能如下:
应用程序/
代码/
本地/
项目名/
重写/
块/
等/
助手/
型号/

另一种解决方案是使用PHPStorm并通过该程序完成。设置项目后,打开文件并按ALT + M将其重写为您想要的任何文件夹。此外,程序还会创建所需的任何其他内容的xml文件。

简单易行。

我希望我能以某种方式帮助过。

答案 2 :(得分:0)

你已经说过了,你的前任用他的核心黑客进行升级很难。你不应该担心性能,app / code / local中的代码不会对它产生负面影响。但是你应该担心功能,因为来自不同版本的大量代码很可能不能很好地协同工作。

您的建议是清理的第一步,但下一步不应该是更新。

  1. 将核心黑客移至app / code / local
  2. 如果需要,使用类重写将它们转换为模块,但总是更喜欢观察者。重写不应该是原始的副本,而是扩展它们并尽可能少地覆盖。
  3. 更新Magento
  4. 调整新版本的重写类
  5. 每一步都应对系统进行彻底测试,尽可能自动化。

    第4步不应该太多,因为1.7在大多数部分中向后兼容1.5。

    这是很多工作,但这是你继承的技术部门,并且更新是发薪日。 在这个过程中最复杂的事情是找出核心黑客所做的事情,它们属于一体,是否真的有必要。

答案 3 :(得分:0)

正确的方法是在1.5.xx版本上针对库存核心未修改代码执行差异,编写模块以反映更改,然后升级到1.7.xx。

diff -qrbB app/unmodified-core app/modified-core

会让你找到所有的邪恶。然后,模块只需要已经改变的功能,这可能比你意识到的要少得多。由于它是少数功能,你实际上在升级时会遇到很少的麻烦,因为有很多代码可以冲突(可能你复制到local / Mage的所有内容都会在你提出的方法中与core / Mage发生冲突)在模块写入之后进行故障排除问题,例如在一杯糖中找到一根针而不是一个装满干草的谷仓。

答案 4 :(得分:0)

感谢您的回答

我想分享我的所作所为。

首先我下载新的1.5 magento版本。然后我在我的/ app / code / core / Mage中将代码与新的1.5 magento / app / code / core / Mage进行比较,借助Linux中的Meld Diff Viewer等工具。然后我覆盖我发现差异的本地文件夹中的文件。

第二步:使用Magento 1.7升级数据库。要升级数据库,请在1.7 magento的app / etc / local.xml中输入1.5数据库(用户名,密码,dbname)的凭据。运行1.7 magento安装。检查数据库表,数据库升级后,表的数量都在增加。

第3步:上传magento 1.7到1.5的文件(/ app / code / core /,js文件夹,包含文件夹和lib文件夹)

第4步:禁用本地模块。

5:删除缓存文件夹。

  1. 检查站点,逐个启用本地模块。
  2. 如果您的网站在1.7

    中升级没有错误