nuanxin

1. 打开Ecshop积分商城文件 "根目录/exchange.php"

发现248行与289行都有库存不足时报错的提示代码:

    248行:

    /* 查询:检查兑换商品是否有库存 */
    if($goods[\'goods_number\'] == 0 && $_CFG[\'use_storage\'] == 1)
    {
        show_message($_LANG[\'eg_error_number\'], array($_LANG[\'back_up_page\']), array($back_act), \'error\');
    }

   289行:

    //查询:商品存在规格 是货品 检查该货品库存
    if((!empty($specs)) && ($product_info[\'product_number\'] == 0) && ($_CFG[\'use_storage\'] == 1))
    {
        show_message($_LANG[\'eg_error_number\'], array($_LANG[\'back_up_page\']), array($back_act), \'error\');
    }

显然248行是直接检查的商品库存这里是没有问题的。问题出在289行,检查货品出了问题。

这里代码的意思是只要存在属性选择,就对对货品数量进行库存检查这显然是错误的,

因为:只有单选属性 跟货品挂钩,多选属性 是没有货品概念。

2. 修改Ecshop积分兑换文件代码解决问题。

修改289行代码:

    //查询:商品存在规格 是货品 检查该货品库存
    if((!empty($specs)) && ($product_info[\'product_number\'] == 0) && ($_CFG[\'use_storage\'] == 1))
    {
        show_message($_LANG[\'eg_error_number\'], array($_LANG[\'back_up_page\']), array($back_act), \'error\');
    }

如下:

    //查询:商品存在规格 是货品 检查该货品库存
    if((is_spec($specs)) && ($product_info[\'product_number\'] == 0) && ($_CFG[\'use_storage\'] == 1))
    {
        show_message($_LANG[\'eg_error_number\'], array($_LANG[\'back_up_page\']), array($back_act), \'error\');
    }

重新测试问题已经解决了。


3. 修改原理介绍——Ecshop二次开发知识总结。

 做过Ecshop二次开发的朋友都了解,Ecshop中商品的属性有三种:

唯一属性:
 只有一个值,购买商品时不能选择。
单选属性:
 拥有多个值,用户只能选一个,比如颜色,选择红色的衣服或者蓝色的。
复选属性:
 复选属性拥有多个值,用户可以选择多个。

在三种属性中仅第二种“单选属性 ”与货品库存有关。而函数is_spec()就是检查一组属性中是否有单选属性。因为加上此判断后问题解决。

分类:

技术点:

相关文章:

  • 2021-11-18
  • 2021-04-12
  • 2021-06-18
  • 2021-06-11
  • 2021-11-14
  • 2022-12-23
  • 2021-12-09
  • 2022-12-23
猜你喜欢
  • 2021-07-26
  • 2022-12-23
  • 2021-11-17
  • 2021-11-30
  • 2021-11-20
  • 2021-08-20
相关资源
相似解决方案