我已按照此回答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
在顶部/底部列中启用模块时。所以,什么都不做。
答案 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了(特别是新版本)。