是否可以创建同时支持 OpenCart 2.3 和 3.0 的插件?

Is the possible to create plugin, that will support OpenCart 2.3 and 3.0 at the same time?

我们有 OpenCart 插件,仅支持 3.0 版。我们的任务是添加对 OpenCart 2.3 之前版本的支持。有什么办法可以在一个插件中做到这一点?还是我们需要为每个版本创建插件?

理论上可以使用“https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=31589”并在控制器文件中进行少量修改。但我更喜欢将 tpl 转换为树枝。

是的,有很多方法可以做到这一点。我认为完全维护是一个巨大的痛苦,它可能会给你带来巨大的支持头痛。它将需要额外的文件,例如带有代码的文件,用于首先检测适当的 OC 版本,然后在这些文件中使用必要的函数来指向具有适当版本文件的各种特定版本文件夹结构。然后你必须考虑这样一个事实,即你让人们在他们的 opencart 目录中携带两组 folders/file 结构,而他们只需要使用一组来使插件的适当版本成为 运行 在。例如,您提到的两个版本的市场和扩展文件夹都不同。这些是需要考虑的一些事情。

您必须首先设置某种全局变量来检测和存储 OC 版本,大致如下:

global $oc_version;
$oc_version = (int)str_replace('.','',VERSION);

然后你会有一大堆函数告诉 oc 根据检测到的 oc 版本如何处理你的模块,例如指定 运行 模块文件夹的路径 运行 树枝或 tpl。大致如下:

if ($data['oc_version'] = 2300) 
 // Do Stuff
} elsif ($data['oc_version'] = 3000)
 // Do other stuff
}

但是,您在使用我的示例时会遇到的问题是,如果某人使用的版本是 3.0.2.0(而不是 3.0)并且没有实际影响您的模块的更改,那么请尝试go based on detecting the OC version 是行不通的。你必须改变你的运营商,投入更多的思考,等等。因此,你将不得不在任何次要 patch/version 版本中经常重新修改相同代码的部分。我看不出它如何为您节省更多的工作。