Magento 2.4.5-p1:如何在可配置产品下拉框显示子产品缺货文本
Magento 2.4.5-p1 可配置产品下拉缺货选项显示“缺货”文本方案
方式一:检查后台基础配置
先确保后台已开启缺货产品的前端显示权限:
- 登录后台,进入 Stores > Configuration > Catalog > Inventory > Stock Options
- 找到 Display Out of Stock Products,设置为 Yes,保存配置后刷新缓存。
该配置仅保证缺货子产品在下拉选项中可见(默认状态为禁用),若要添加“缺货”标识,还需修改前端模板或逻辑。
方式二:修改前端模板添加缺货文本
1. 适配普通可配置产品下拉模板
复制核心模板文件到主题目录(禁止直接修改核心文件,避免升级丢失改动):
app/design/frontend/[你的主题包]/[主题名]/Magento_ConfigurableProduct/templates/product/view/type/options/configurable.phtml
找到生成下拉选项的循环代码,在选项标签内添加缺货判断:
<?php foreach ($_attributes as $_attribute): ?> ... <?php foreach ($_attribute->getOptions() as $_option): ?> ... <option value="<?php echo $_option->getValue() ?>" <?php if (!$_option->getIsAvailable()): ?>disabled="disabled"<?php endif; ?> <?php echo $_selectedOption == $_option->getValue() ? 'selected="selected"' : '' ?> > <?php echo $_option->getLabel() ?> <?php if (!$_option->getIsAvailable()): ?> <span>(缺货)</span> <?php endif; ?> </option> ... <?php endforeach; ?> ... <?php endforeach; ?>
2. 适配Swatches属性切换组件(如颜色/尺寸色块)
若店铺使用Swatches模块展示属性,需修改Swatches模板:
复制核心文件到主题目录:
app/design/frontend/[你的主题包]/[主题名]/Magento_Swatches/templates/product/view/renderer.phtml
找到生成Swatch选项的代码,追加缺货标识:
<?php foreach ($_swatchOptions as $_option): ?> ... <div class="swatch-option text" data-option-type="0" data-option-id="<?php echo $_option['option_id'] ?>" data-option-label="<?php echo $_option['label'] ?>" data-option-tooltip-thumb="" data-option-tooltip-value="<?php echo $_option['label'] ?>" <?php if (!$_option['products']): ?>disabled="disabled"<?php endif; ?> > <?php echo $_option['label'] ?> <?php if (!$_option['products']): ?> <span class="out-of-stock-label">(缺货)</span> <?php endif; ?> </div> ... <?php endforeach; ?>
3. 刷新缓存生效
修改完成后,进入后台 System > Cache Management,刷新所有缓存,前端页面刷新后即可看到效果。
注意事项
- 所有修改必须基于主题重写实现,禁止直接修改Magento核心文件。
- 若使用第三方库存管理插件,需额外适配——部分插件会覆盖默认的库存判断逻辑。
内容的提问来源于stack exchange,提问作者Kasper Elund
相关产品推荐
相关产品推荐

