0

我正在尝试用我编写的自定义代码替换模型上的一大块代码。

这是代码。我工作,但它留下了很多偏移量。也许有更好的方法来做到这一点

<operation info="Example of the vQmod">
<search position="replace" offset="3"><![CDATA[
Some code I want to Replace
Some code I want to Replace
Some code I want to Replace
]]></search>
<add><![CDATA[
Replaced Code
Replaced Code
Replaced Code
]]></add>
</operation>
4

2 回答 2

0

在 Opencart 中,您无法搜索多行代码并将其替换为新的多行代码。它只能搜索单行,然后用单行或多行代码替换或添加。

偏移是搜索单行代码,然后偏移下面的行数,然后替换或添加新的编码。像这样的东西:

   <operation info="Example of the vQmod">
    <search position="replace" offset="3"><![CDATA[
    code I want to Replace at offset line 3
    ]]></search>
    <add><![CDATA[
    Replaced Code
    add code
    add code
    ]]></add>
    </operation>
于 2016-04-01T15:03:15.030 回答
0

Vqmods 偏移值用于替换一行和后面的 x 行,但仅搜索一行。Vqmod 在搜索中不匹配多行。

例子 :

输入

 public function index() {
        $a = rand();
        $b = rand();
        if ($a == $b) {
            echo 'oh noes';
            return false;
        }
    }

脚本

 <?xml version="1.0" encoding="UTF-8"?>
    <modification>
        <id>Replace many lines with one</id>
        <version>1.0</version>
        <vqmver>2.X</vqmver>
        <author>xxx</author>
        <file name="path/to/testfile.php">
            <operation info="Replace index function">
                <search position="replace" offset="7"><![CDATA[
                public function index() {
                ]]></search>
                <add><![CDATA[
                public function index($arr = array()) {
                    foreach ($arr as $a) {
                        echo $a;
                        }
                }
                ]]></add>
            </operation>
        </file>
    </modification>

输出

 public function index($arr = array()) {
        foreach ($arr as $a) {
            echo $a;
            }
    }

注意:仍然有 7 个空行。偏移量会清除输入中额外的 7 行代码,但会添加替换的代码来代替初始行。所以新代码后面会有7个额外的空格,但不会影响代码功能,只是vqcache文件的外观无关紧要。

于 2015-12-17T11:57:10.403 回答