我希望将我的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网站的性能吗?
答案 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中的代码不会对它产生负面影响。但是你应该担心功能,因为来自不同版本的大量代码很可能不能很好地协同工作。
您的建议是清理的第一步,但下一步不应该是更新。
每一步都应对系统进行彻底测试,尽可能自动化。
第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.7
中升级没有错误