2

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>

但它不工作。第三行出现在多个位置,因此不能仅替换为单行。

请帮忙

4

1 回答 1

7

在 vqmod 中不能进行多行搜索。所以你需要使用 vqmodindex属性。如果“Search”字符串是“hello”并且文件中有 5 个“hello”,但您只想替换第 1 个和第 3 个,请使用 Index: 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

祝你今天过得愉快 !!

于 2014-05-06T05:40:39.697 回答