0

我已经按照这个答案检查 OpenCart 2.0 中的模块位置,当直接在核心文件中添加代码时,它工作正常。

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


我们的 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 版本 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

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

4

1 回答 1

0

好吧,我已经有一段时间没有关注 OpenCart 了,但我想我可以帮助你解决你的问题,因为我似乎记得有类似的情况。

首先,我建议您始终检查vqcache文件夹中输出的代码,以便您可以更彻底地查看。

其次,问题似乎是通过 vqmod 添加它会首先触发对变量的检查,即它实际上没有事先初始化,但在那一刻,因此您会收到“未定义索引”错误。解决方案应该是替换:

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

和:

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

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

我希望我能帮助你更多,但我已经很长时间没有使用 OpenCart(尤其是新版本)。

于 2015-01-05T08:54:32.343 回答