Ecshop修改后台的大分类商品数量

本文介绍了如何修改ECShop的后台系统,以实现大分类下商品数量的精确统计。通过更新lib_common.php文件中的函数,使用递归计算每个分类及其子分类的商品总数,确保包含子类的商品数目。同时,调整cat_list()方法的SQL查询,以获取每个分类的准确在售商品数,从而提供更完整的商品统计信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ecshop修改后台的大分类商品数量

 

修改后效果:

 

 

 

解决方法:

1.修改ecshop/includes/lib_common.php文件代码。

  添加计算分类下的商品总数方法:

 

/**

 *

 * 使用递归,算出分类下的子类goods_num

 * @param 分类id $cat_id

 */

function get_sub_goods_number($cat_id){

$sub_goods_num=0;

//算出某类的子分类

$sql="select cat_id from ".$GLOBALS['ecs']->table('category') ." where parent_id=".$cat_id;

$res5 = $GLOBALS['db']->getAll($sql);

if($res5==null){

return 0;

}

foreach($res5as$k1=>$v1){

//子分类对应的

$sql="select count(*) as goods_num from ".$GLOBALS['ecs']->table('goods') ." where cat_id=".$v1['cat_id']." and is_delete = 0 AND is_on_sale = 1";

//print($sql);

$res6 = $GLOBALS['db']->getAll($sql);

$goods_num=0;

        foreach($res6as$k6=>$v6){

            $goods_num=$v6['goods_num'];

         }

$sub_goods_num=$sub_goods_num+$goods_num+get_sub_goods_number($v1['cat_id']);

}

return $sub_goods_num;

}


2.修改ecshop/includes/lib_common.php文件的cat_list()方法

  修改$res2sql语句

 //计算每个分类下的商品数,不包括子分类

  $sql="select b.cat_id,(case when a.cat_id<>'null' then count(*) else '0'  end) as goods_num from ".$GLOBALS['ecs']->table('goods'). " as a right join ".$GLOBALS['ecs']->table('category'). " as b on a.cat_id=b.cat_id group by b.cat_id";

 

加了下划线的代码为修改后的代码

 

 foreach($res2as$k=>$v)

            {

            

//1.得到所有分类id

//2.根据这些id查询相应的goods_number

$sql="select count(*) as goods_num from ".$GLOBALS['ecs']->table('goods'). " where cat_id=".$v['cat_id']. " AND is_delete = 0 AND is_on_sale = 1";

            $res4 = $GLOBALS['db']->getAll($sql);

            $goods_num=0;

            foreach($res4 as $k4=>$v4){

            $goods_num=$v4['goods_num'];

            }

$v['goods_num']=$goods_num;

                $newres[$v['cat_id']] = $v['goods_num']+get_sub_goods_number($v['cat_id']);

                foreach($res3as$ks=>$vs)

                {

                    if($v['cat_id'] == $vs['cat_id'])

                    {

                    $newres[$v['cat_id']] = $v['goods_num'] + $vs['goods_num'];

                    }

                }

            }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值