我试图用我自己编写的自定义代码替换模型上的一大块代码。
这是代码。我工作,但它留下了很多抵消。 也许有更好的方法来做到这一点
<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>
答案 0 :(得分: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文件的外观并不重要。
答案 1 :(得分: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>