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

Opencart需求:库存为0时分类及商品页加入购物车按钮显示缺货

完整解决方案:分类页&商品详情页库存为0时按钮显示"Out of Stock"

嘿,我来帮你把这个需求的完整方案梳理清楚,覆盖你提到的分类页,还有商品详情页的场景:

一、分类页(Category Page)修改

1. 后端Controller修改

打开文件 controller/product/category.php,找到 $data['products'][] = array( 这一行,在数组里新增两个字段,把库存数量和库存状态传递给前端:

$data['products'][] = array(
    // 原有字段保持不变
    'quantity' => $result['quantity'],
    'stock_status' => $result['stock_status']
);

2. 前端Template修改

打开你当前主题的分类页模板 catalog/view/theme/你的主题名/template/product/category.twig,找到原来的 {{ button_cart }} 代码,替换成以下判断逻辑:

{% if product.quantity > 0 %}
    {{ button_cart }}
{% else %}
    <button type="button" class="btn btn-default" disabled>{{ product.stock_status }}</button>
{% endif %}

如果你不想用系统默认的库存状态文本,想硬编码显示"Out of Stock",可以把 {{ product.stock_status }} 改成 'Out of Stock'

二、商品详情页(Product Detail Page)修改

1. 后端Controller修改

打开文件 controller/product/product.php,找到 $data['product'] = array( 这一行,确保数组里包含库存数量字段(如果没有就加上):

$data['product'] = array(
    // 原有字段保持不变
    'quantity' => $product_info['quantity']
);

通常这个字段默认已经存在,你可以先检查一下,没有的话再添加。

2. 前端Template修改

打开你当前主题的商品详情页模板 catalog/view/theme/你的主题名/template/product/product.twig,找到"加入购物车"按钮的代码块(一般是 {{ button_cart }} 或者直接的button标签),替换成:

{% if product.quantity > 0 %}
    {{ button_cart }}
{% else %}
    <button type="button" class="btn btn-default" disabled>Out of Stock</button>
{% endif %}

额外注意事项

  • 记得把上面的你的主题名替换成你实际使用的主题文件夹名称,比如默认主题是default
  • 如果是多语言站点,更推荐用语言变量来实现:在对应语言文件(比如language/en-gb/product/product.php)里添加 $_['text_out_of_stock'] = 'Out of Stock';,然后前端用 {{ text_out_of_stock }} 代替硬编码文本
  • 修改完成后,建议清理OpenCart的缓存(系统->设置->编辑商店->服务器->缓存,点击清除),确保修改生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:29:51