进行Magento更新的最佳做法?

时间:2012-08-01 10:57:05

标签: php magento

进行Magento更新的最佳做法是什么(Magento安装维护不当)。

我想到以下内容:

  • 查看app / code / local中的完全覆盖模块 - 将文件与旧版本进行比较并将它们转发到新的Magento版本
  • 比较模板
  • 比较布局XML文件(如果它们直接复制到自定义主题文件夹,并且没有使用仅包含真实更新的单个layout.xml)
  • 将重写类的方法与原始类的方法进行比较

主要问题是:在旧的,维护不良的Magento安装中传播文件时,您永远不知道复制的原始文件的版本。有时我试着通过查看文件评论中的Magento版权来识别旧版本。

为避免在更新期间遇到麻烦,我们通常会执行以下操作:

  • 避免重写,改为使用事件
  • 如果需要重写,请尝试不复制代码,但调用parent :: method()以仅在覆盖的类中保留必要的功能
  • 如果需要复制代码,请使用标记注释,例如[Mycompany BEGIN] ... [Mycompany END]
  • 不要复制整个布局文件,而是使用仅更新的单个layout.xml。

但如果不采取这些预防措施,如何更新?

2 个答案:

答案 0 :(得分:1)

首先我要指出,您的问题的内容表明了对(至少我认为是)最佳做法的清晰理解。

关于潜在的多个版本的原产地:软件升级的目标是使新的类和方法到位,期间。这意味着(正如您所提到的)移植任何自定义项,无论它们是如何实现的。

除了勤奋的差异之外,不幸的是,针对您的情况的最佳技术将是回归测试 - 检查多个视图的生成输出。

很可能是你可能需要进行试图,即从干净安装开始并积极引入自定义功能&主题仍然被认为是必要的。这似乎不是最有效的方法,但我认为这些好处超过了明显的开销:

  1. 您将控制所有自定义行为并且没有任何意外
  2. 您将获得单一来源的健康代码库
  3. 在某个时刻,客户成为代码的所有者,并且重新整合自定义的白名单/肯定方法似乎是确保您的所有权的最佳方式是你所期待的。

答案 1 :(得分:0)

我要做的第一件事就是将网站复制到开发环境中。现在对其进行备份,以便您可以随时恢复到该备份。此时我还会将实时网站置于代码锁定状态。除非绝对必要,否则不再对代码进行更改(如果有更改,则必须在新的开发环境中复制它们)

现在您已经拥有了可供您使用的网站的安全副本,现在开始有趣了。

我要做的第一件事是下载你正在运行的Magento股票版本的副本。在股票版本和您当前拥有的/ app / code / core之间做差异。这会告诉你你的不同之处。我会尝试维护你现有的所有功能,同时让核心恢复正常。

希望在这一点上你有一个非常干净的Magento安装。您可以考虑将其推回到实时服务器,但我有一种感觉,您可能不得不进行大量的修改以实现这一点,因此它可能不是一个可行的选择。

现在我将对开发网站进行单独备份,以便您在需要时可以回到这一点。

现在,我会在开发网站上尝试升级。希望一切顺利,你没有升级的问题。如果不这样做,则进行所需的更正并从那里继续。

此时,您应该拥有一个稳定的代码库,以便升级。再次备份(只是为了安全),推送新代码,并希望一切正常。