1

我正在使用 OCmod 对 Opencart 进行修改。最初,我开始为 Opencart 2 编写它(它实际上已经完成并且正在工作)。现在,我正在为 OC3 升级它。

这是一个简单的例子,说明出了什么问题。

以前,我为 OC2 写了这个:

<operation>
    <search><![CDATA[
        'status' => ($result['status']) ? $this->language->get('text_enabled') : $this->language->get('text_disabled'),
    ]]></search>
    <add position="replace"><![CDATA[
        'status' => ($result['status']),
    ]]></add>
</operation>

问题是:从 OC3 开始,这部分代码:

'status' => ($result['status']) ...

已更改为:

'status' => $result['status'] ...

因此,将找不到该行,并且不会进行替换。

出于这个原因,如果我希望发布我对这两个版本的修改,我将不得不发布我的修改的两个不同版本。

我想知道是否有一种方法可以告诉 OCmod 搜索这两行之一,然后更改它找到的那一行。这样,我可以只有一个代码适用于两个版本。

我尝试复制那段代码,使其查找两行,但我的修改停止工作,因为找不到其中一行。

关于如何解决这个问题的任何想法?

4

1 回答 1

0

解决了

事实证明,OCmod 允许您只选择一段代码,而不仅仅是整行。由于我只需要删除该行的最后一部分,因此我这样做了:

<operation>
    <search><![CDATA[
        ? $this->language->get('text_enabled') : $this->language->get('text_disabled'),
    ]]></search>
    <add position="replace"><![CDATA[
        ,
    ]]></add>
</operation>

此外,如果它对任何人有帮助,让 OCmod 查找不存在的文件不会导致错误。这很有帮助,因为文件“ product_list.tpl ”已在 Opencart 3 中重命名为“ product_list.twig ”。因此,在我的 install.xml 文件中,我能够为这两个文件编写修改,即使其中一个不会根据 OpenCart 版本找到。

于 2018-01-29T19:53:24.313 回答