You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Opencart安装eMarket主题时so_megamenu.php第373行数组偏移访问报错

报错根本原因

错误提示Trying to access array offset on value of type bool说明第373行的$product变量是布尔值(通常是商品查询失败返回的false),不是预期的商品数组,无法读取name下标。

排查步骤

  • 定位$product变量的赋值位置,通常在这段代码上方几行,是调用Opencart商品模型查询指定ID商品得到的结果
  • 验证查询传入的商品ID合法性:检查是否传入了不存在、已删除的商品ID,导致查询返回空/false
  • 检查eMarket主题自带的so_megamenu模块后台配置:确认是否配置了引用已删除商品的菜单项,尤其是设置了展示单个商品的超级菜单项

解决方法

临时修复(快速消除报错不影响站点运行)

在$product赋值后、第373行之前加非空判断,$product无效时自动填充默认值,修改后代码参考:

// 找到$product变量赋值的代码行,在下方加入这段判断
if (!is_array($product)) {
    $product = ['name' => ''];
    $product_link = '';
    $product_image = '';
    $price = '';
    $special = '';
}

// 原有的$output数组定义保持不变即可
$output[] = array(
'name' => @unserialize($row['name']),
            'content_width' => intval($row['content_width']),
            'content_type' => $row['content_type'],
            'html' => $html,
            'product' => array(
                'name' => $product['name'],  //line 373
                'link' => $product_link,
                'image' => $product_image,
                'price' => $price,
                'special' => $special
            ),
            'categories' => $categories,            'manufactures' => $manufactures,            'subcategory' => $subcategory,          'productlist' => $productlist,          'images'    => $images,             'class_menu'    => $row['class_menu'],
            'submenu' => $this->getSubmenu($row['id'])
        );

彻底修复

  • 登录Opencart后台,进入扩展->模块->SO Megamenu配置页
  • 逐个检查每个菜单项的内容设置,找到设置了商品展示的项,将其中引用的不存在/已删除商品替换为现有合法商品
  • 保存配置后清空Opencart全部缓存(包括系统缓存、vqmod/ocmod缓存),刷新前台验证报错是否消失

内容的提问来源于stack exchange,提问作者Vicky Maharjan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:24:08