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

时间:2019-01-09 12:54:51

标签: opencart

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

2 个答案:

答案 0 :(得分:3)

是的,有很多方法可以做到这一点。我认为尽管要完全维持它是一个巨大的痛苦,并且可能会引起您巨大的支持头痛。它将需要其他文件,例如带有代码的文件,以首先检测OC的适当版本,然后在这些文件中包含必要的功能,以指向具有适当版本文件的各种特定版本的文件夹结构。然后,您必须考虑到这样一个事实,即当人们只需要使用一组适当版本的插件来运行插件时,就会在他们的opencart目录中携带两组文件夹/文件结构。例如,您提到的两个版本的市场文件夹和扩展文件夹是不同的。这些是要考虑的事情。

您必须设置某种某种形式的全局变量,才能首先检测和存储OC版本,类似于:

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

然后,您将有很多函数告诉oc,具体取决于检测到的oc版本,该如何处理模块,例如,指定从中运行模块文件夹以及在其中运行twig或tpl的路径。类似于:

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

但是,您在我的示例中遇到的问题是,如果某人使用的版本是3.0.2.0(而不是3.0),并且没有实际影响您模块的更改,那么请尝试基于在检测OC版本上将不起作用。您必须更改您的运算符,多加思考,等等。因此,您将必须在任何次要的补丁/版本发行中保持频繁地重新修改同一代码的某些部分。我看不出这条路线如何为您节省更多的工作。

答案 1 :(得分:0)

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