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

OC3.0.2.0后台产品列表添加SKU显示及筛选功能求助

在OpenCart 3.0.2.0后台产品列表显示SKU并添加筛选功能

嘿,我刚好折腾过OC3.0.2.0的这个需求,给你一步步拆解具体操作,记得改文件前先备份,避免出错:

一、在产品列表中显示SKU编号

需要修改控制器、视图和语言文件三个地方:

1. 修改控制器文件(获取SKU数据)

打开 admin/controller/catalog/product.php,找到index()方法里获取产品列表的查询部分:

  • 在$query = $this->db->query("SELECT ...")的SELECT字段中,添加p.sku,比如把原字段p.product_id, p.name, p.model改成p.product_id, p.name, p.model, p.sku;
  • 接着在循环赋值$products[] = array(的数组里,添加一行:'sku' => $result['sku'],

2. 修改视图文件(渲染SKU列)

打开 admin/view/template/catalog/product_list.twig:

  • 在表头区域(<thead>内),找到<th>{{ column_model }}</th>,在它后面添加一行:<th>{{ column_sku }}</th>;
  • 在表格内容区域(<tbody>内的<tr>里),找到<td>{{ product.model }}</td>,在它后面添加一行:<td>{{ product.sku }}</td>

3. 添加语言翻译(表头显示中文)

打开 admin/language/zh-cn/catalog/product.php,在类似$_['column_model'] = '型号';的位置,添加一行:

$_['column_sku'] = 'SKU编号';

二、实现按SKU编号筛选产品的功能

同样需要修改控制器、视图和语言文件:

1. 修改控制器与模型文件(添加筛选逻辑)

  • 回到 admin/controller/catalog/product.php 的index()方法,在获取筛选参数的部分添加:
    if (isset($this->request->get['filter_sku'])) {
        $filter_sku = $this->request->get['filter_sku'];
    } else {
        $filter_sku = '';
    }
    
  • 把$filter_sku传入产品模型的参数数组,在$data['products'] = $this->model_catalog_product->getProducts($data);之前的$data里添加:'filter_sku' => $filter_sku,
  • 打开 admin/model/catalog/product.php 的getProducts()方法,在WHERE p.status = '1'之后添加SKU筛选条件:
    if (!empty($data['filter_sku'])) {
        $sql .= " AND p.sku LIKE '%" . $this->db->escape($data['filter_sku']) . "%'";
    }
    
  • 最后在分页URL拼接部分,带上SKU筛选参数,比如在'url' => $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . '&filter_name=' . urlencode($filter_name) . ...里,加上&filter_sku=' . urlencode($filter_sku)

2. 修改视图文件(添加SKU筛选输入框)

打开 admin/view/template/catalog/product_list.twig,在筛选表单区域找到名称为filter_name的输入框组,在它后面添加:

<div class="form-group">
  <label class="col-sm-2 control-label" for="input-sku">{{ entry_sku }}</label>
  <div class="col-sm-10">
    <input type="text" name="filter_sku" value="{{ filter_sku }}" placeholder="{{ entry_sku }}" id="input-sku" class="form-control" />
  </div>
</div>

3. 添加筛选框的语言翻译

打开 admin/language/zh-cn/catalog/product.php,添加一行:

$_['entry_sku'] = 'SKU编号';

最后提醒

如果不想修改核心文件(避免后续升级被覆盖),可以把这些修改做成OCmod或者vQmod的扩展包,这样更安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:30:12