OpenCart 3.0.3.1升级后Journal3与Option-Combination价格显示异常求助
解决OpenCart Journal3与Option-Combination扩展的价格显示兼容问题
我来帮你搞定这个价格显示的bug!根据你描述的业务逻辑——优先显示customer_group_price(折扣标签价),为空时再显示otp_customer_price(Option-Combination扩展的价格),最后兜底用商品默认价格,我们可以修改Journal3模块控制器里的价格代码,同时兼容带扩展和不带扩展的商品:
修改后的代码
if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { // 按优先级确定最终使用的价格 $final_price = null; // 1. 优先使用客户组折扣价 if (!empty($result['customer_group_price'])) { $final_price = $result['customer_group_price']; } // 2. 其次使用Option-Combination扩展的价格(请确认字段名是否正确,若不对替换成扩展实际字段) elseif (!empty($result['otp_customer_price'])) { $final_price = $result['otp_customer_price']; } // 3. 最后兜底用商品默认价格(兼容未使用扩展的商品) else { $final_price = $result['price']; } // 沿用原逻辑计算税费并格式化价格 $price = $this->currency->format( $this->tax->calculate($final_price, $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency'] ); } else { $price = false; }
代码说明
- 这段代码严格遵循了你要求的优先级:先取折扣价,再取扩展专属价格,最后用商品默认价格,完美覆盖两种场景;
- 如果
otp_customer_price不是Option-Combination扩展实际存储的价格字段(比如你之前尝试的starting_from),直接把字段名替换成扩展对应的正确名称即可; - 保留了原有的税费计算和货币格式化逻辑,确保所有商品的价格展示规则一致。
额外注意
替换代码前记得备份原文件,避免操作失误导致其他问题。如果替换后还有个别商品价格异常,可以检查对应商品的字段值是否正确,或者扩展是否有其他隐藏的价格处理逻辑。
内容的提问来源于stack exchange,提问作者balloon-guy
相关产品推荐
相关产品推荐

