VQMOD替换不适用于多行搜索

时间:2014-05-06 04:44:40

标签: php opencart vqmod

opencart中有一个函数需要替换如下:

protected function validateDelete() {
        if (!$this->user->hasPermission('modify', 'catalog/download')) {
            $this->error['warning'] = $this->language->get('error_permission');

应该是:

protected function validateDelete() {
        if (!$this->user->hasPermission('delete', 'catalog/download')) {
            $this->error['warning'] = $this->language->get('error_permission_delete');

我试过了:

<search position="replace"><![CDATA[
            protected function validateDelete() {
                if (!$this->user->hasPermission('modify',]]></search>
            <add><![CDATA[
            protected function validateDelete() {
                if (!$this->user->hasPermission('delete',
            ]]></add>

但它不起作用。第三行显示在多个位置,因此无法单行替换。

请帮忙

1 个答案:

答案 0 :(得分:7)

无法在vqmod中进行多行搜索。因此,您需要使用vqmod index属性。如果“搜索”字符串是&#39;你好&#39;并且文件中有5个问题,但您只想替换第1个和第3个,请使用索引:1,3。

所以更改你的vqmod代码如下:

<operation>
    <search position="replace" index="3"><![CDATA[if (!$this->user->hasPermission('modify', 'catalog/download')) {]]></search>
    <add><![CDATA[
        if (!$this->user->hasPermission('delete', 'catalog/download')) {
    ]]></add>
</operation>
<operation>
    <search position="replace" index="3"><![CDATA[$this->error['warning'] = $this->language->get('error_permission');]]></search>
    <add><![CDATA[
        $this->error['warning'] = $this->language->get('error_permission_delete');
    ]]></add>
</operation>

请勿忘记更新index值。

参考链接:https://sankartypo3.wordpress.com/2013/11/25/opencart-vqmod-tutorial/http://code.google.com/p/vqmod/wiki/Scripting

度过美好的一天!!