通过vqmod添加代码时出错

时间:2014-12-31 07:04:36

标签: php opencart vqmod opencart2.x

我已按照此回答Check module position in OpenCart 2.0进行了正常工作。将代码直接添加到核心文件中。

但是,当相同的代码(步骤3)通过Vqmod添加时(不更改核心文件)。所以,这不行。获取错误(注意:未定义的索引:位于....)


我们的Vqmod代码。

<file path="catalog/controller/common/" name="content_top.php,content_bottom.php,content_right.php,content_left.php">
    <operation>
      <search position="after">
        <![CDATA[$setting_info = $this->model_extension_module->getModule($part[1]);]]>
      </search>
      <add>
        <![CDATA[$setting_info['position'] = basename(__FILE__, '.php');]]>
      </add>
    </operation>
  </file>

我使用的是OpenCart Version 2.0.1.1

如何解决?


===更新===

更改了vqcache文件中的代码。

if (isset($part[1])) {
            $setting_info = $this->model_extension_module->getModule($part[1]);


            if(!isset($setting_info['position'])){
                $setting_info['position'] = basename(__FILE__, '.php');
            }



            if ($setting_info && $setting_info['status']) {
                $data['modules'][] = $this->load->controller('module/' . $part[0], $setting_info);
            }

在左/右列中启用模块时。所以,确实得到以下错误。

Notice: Undefined index: position in C:\......\template\module\featured.tpl on line 1

在顶部/底部列中启用模块时。所以,什么都不做。

1 个答案:

答案 0 :(得分:0)

好吧,我现在还没有关注OpenCart一段时间,但我想我可以帮助你解决问题,因为我似乎回想起类似的情况。

首先,我建议您始终检查 vqcache 文件夹中输入的代码,以便更全面地查看。

其次问题似乎是通过vqmod添加它会触发对变量的检查,首先它实际上没有事先初始化,但是在那一刻,因此你得到一个&#34;未定义的索引&#34;错误。解决方案应该取代:

<![CDATA[$setting_info['position'] = basename(__FILE__, '.php');]]>

使用:

    <![CDATA[
                if(!isset($setting_info['position'])){
                    $setting_info['position'] = basename(__FILE__, '.php');
                }
    ]]>

一般的想法是检查变量是否存在之前应该是解决方案。如果不是,您应该调试vqcache文件夹中生成的文件,看看实际呈现的代码是什么。

我希望我能为您提供更多帮助,但我已经很长时间没有使用OpenCart了(特别是新版本)。