2

我想将我的 magento 版本从升级1.51.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 网站的性能吗?

4

5 回答 5

4

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

做一个专业人士:针对一个普通的 1.5.xx 代码库运行一个差异,并尽可能地合并核心之外的更改。至少只移动到app/code/local/Mage/那些发生显着变化或超类的类,然后将它们与 1.7.0.2 版本进行比较以完成合并。

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

于 2013-04-04T14:40:48.770 回答
0

正确的方法是对 1.5.xx 版本与未修改的股票核心代码进行比较,编写模块以反映更改,然后升级到 1.7.xx。

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

会让你找到所有的邪恶。然后模块将只需要已更改的功能,这可能远比您意识到的要少。由于它是少数功能,因此您实际上对升级的头痛要少得多,因为那里有更少的代码发生冲突(在您建议的方法中,您复制到本地/法师的所有内容都可能与核心/法师发生冲突) 在模块写入后进行故障排除问题,例如在一杯糖中找到一根针,而不是在一个装满干草的谷仓中。

于 2013-04-04T20:13:20.353 回答
0

你已经说过了,你的前任用他的核心技巧让升级变得困难。您不必担心性能, app/code/local 中的代码不会对其产生负面影响。但是您应该担心功能,因为来自不同版本的大量代码很可能无法很好地协同工作。

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

  1. 将核心黑客移动到应用程序/代码/本地
  2. 将它们转换为模块,必要时使用类重写,但总是更喜欢观察者。重写不应更改原始副本,而应扩展它们并尽可能少地覆盖。
  3. 更新 Magento
  4. 为新版本调整重写的类

在每一步之后,系统都应该进行彻底的测试,尽可能地自动化。

第 4 步应该不多,因为 1.7 在大多数情况下都向后兼容 1.5。

这是很多工作,但这是您继承的技术部门,并且随着更新而来的是发薪日。这个过程中最复杂的事情是找出核心黑客的作用,它们属于一起,以及它们是否真的有必要。

于 2013-04-04T06:19:24.133 回答
0

您可以执行以下操作:

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

你的结构可能看起来像:
app/
  code/
   local/
    ProjectName/
      Rewrites/
       Block/
       etc/
       Helper/
       Model/

另一个解决方案是使用 PHPStorm 并通过程序来完成。设置项目后,打开文件并按 ALT + M 将其重写到您想要的任何文件夹中。该程序还可以创建您需要的任何其他 xml 文件。

简单易行。

我希望我在某种程度上有所帮助。

于 2013-04-04T05:20:12.543 回答
0

感谢您的回答

我想分享我所做的。

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

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

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

第四步:禁用本地模块。

5:删除缓存文件夹。

  1. 检查站点,并逐个启用本地模块。

如果没有错误,您的站点将在 1.7 中升级

于 2013-12-06T10:04:04.260 回答