【技巧分享】需要商品分类树显示商品总数的方法 老杨

2016-07-07 14:55 来源:www.chinab4c.com 作者:ecshop专家



效果如图:





——老杨,承接一切ecshop二次开发、功能定制、整站建设,QQ:359199843




非常简单的改动
1、includes/lib_goods.php下
找到这两个函数改成我这样就行
function get_categories_tree($cat_id = 0)
function get_child_tree($tree_id = 0)

  1. /**
  2. * 获得指定分类同级的所有分类以及该分类下的子分类
  3. *
  4. * @accesspublic
  5. * @paraminteger$cat_id分类编号
  6. * @returnarray
  7. */
  8. function get_categories_tree($cat_id = 0)
  9. {
  10. if ($cat_id > 0)
  11. {
  12. $sql = 'SELECT parent_id FROM ' . $GLOBALS['ecs']->table('category') . " WHERE cat_id = '$cat_id'";
  13. $parent_id = $GLOBALS['db']->getOne($sql);
  14. }
  15. else
  16. {
  17. $parent_id = 0;
  18. }

  19. /*
  20. 判断当前分类中全是是否是底级分类,
  21. 如果是取出底级分类上级分类,
  22. 如果不是取当前分类及其下的子分类
  23. */
  24. $sql = 'SELECT count(*) FROM ' . $GLOBALS['ecs']->table('category') . " WHERE parent_id = '$parent_id' AND is_show = 1 ";
  25. if ($GLOBALS['db']->getOne($sql) || $parent_id == 0)
  26. {
  27. /* 获取当前分类及其子分类 */
  28. $sql = 'SELECT cat_id,cat_name ,parent_id,is_show ' .
  29. 'FROM ' . $GLOBALS['ecs']->table('category') .
  30. "WHERE parent_id = '$parent_id' AND is_show = 1 ORDER BY sort_order ASC, cat_id ASC";

  31. $res = $GLOBALS['db']->getAll($sql);

  32. foreach ($res AS $row)
  33. {
  34. if ($row['is_show'])
  35. {
  36. /*获得分类下商品总数 begin-老杨:QQ359199843 */
  37. $children = get_children($row['cat_id']);
  38. $sql = 'SELECT count(*)' . "FROM " . $GLOBALS['ecs']->table('goods') . ' AS g '.
  39. 'WHERE g.is_on_sale = 1 AND g.is_alone_sale = 1 AND '.
  40. 'g.is_delete = 0 AND (' . $children . 'OR ' . get_extension_goods($children) . ') ';
  41. $cat_goods_num=$GLOBALS['db']->getOne($sql);
  42. $cat_arr[$row['cat_id']]['goods_num']= $cat_goods_num == '' ? 0 : $cat_goods_num;

  43. $cat_arr[$row['cat_id']]['id']= $row['cat_id'];
  44. $cat_arr[$row['cat_id']]['name'] = $row['cat_name'];
  45. $cat_arr[$row['cat_id']]['url']= build_uri('category', array('cid' => $row['cat_id']), $row['cat_name']);

  46. if (isset($row['cat_id']) != NULL)
  47. {
  48. $cat_arr[$row['cat_id']]['cat_id'] = get_child_tree($row['cat_id']);
  49. }
  50. }
  51. }
  52. }
  53. if(isset($cat_arr))
  54. {
  55. return $cat_arr;
  56. }
  57. }

  58. function get_child_tree($tree_id = 0)
  59. {
  60. $three_arr = array();
  61. $sql = 'SELECT count(*) FROM ' . $GLOBALS['ecs']->table('category') . " WHERE parent_id = '$tree_id' AND is_show = 1 ";
  62. if ($GLOBALS['db']->getOne($sql) || $tree_id == 0)
  63. {
  64. $child_sql = 'SELECT cat_id, cat_name, parent_id, is_show ' .
  65. 'FROM ' . $GLOBALS['ecs']->table('category') .
  66. "WHERE parent_id = '$tree_id' AND is_show = 1 ORDER BY sort_order ASC, cat_id ASC";
  67. $res = $GLOBALS['db']->getAll($child_sql);
  68. foreach ($res AS $row)
  69. {
  70. /*获得分类下商品总数 begin-老杨:QQ359199843 */
  71. $children = get_children($row['cat_id']);
  72. $sql = 'SELECT count(*)' . "FROM " . $GLOBALS['ecs']->table('goods') . ' AS g '.
  73. 'WHERE g.is_on_sale = 1 AND g.is_alone_sale = 1 AND '.
  74. 'g.is_delete = 0 AND (' . $children . 'OR ' . get_extension_goods($children) . ') ';
  75. $cat_goods_num=$GLOBALS['db']->getOne($sql);
  76. $three_arr[$row['cat_id']]['goods_num']= $cat_goods_num == '' ? 0 : $cat_goods_num;

  77. if ($row['is_show'])

  78. $three_arr[$row['cat_id']]['id']= $row['cat_id'];
  79. $three_arr[$row['cat_id']]['name'] = $row['cat_name'];
  80. $three_arr[$row['cat_id']]['url']= build_uri('category', array('cid' => $row['cat_id']), $row['cat_name']);

  81. if (isset($row['cat_id']) != NULL)
  82. {
  83. $three_arr[$row['cat_id']]['cat_id'] = get_child_tree($row['cat_id']);

  84. }
  85. }
  86. }
  87. return $three_arr;
  88. }
复制代码


在模板文件中,可能是category_tree.lbi中,也可能是别的库文件名,总之看模板去改

在{$cat.name}后添加:
  1. ({$cat.goods_num})
复制代码


在{$child.name}后添加:
  1. ({$child.goods_num})
复制代码


在{$childer.name}后添加:
  1. ({$childer.goods_num})
复制代码


效果如图:



——老杨,承接一切ecshop二次开发、整站建设,QQ:359199843


ecshop整站类开发:


【整站开发】老杨 一个整站开发 大家看看有没有喜欢的功能

【整站开发】 ecshop 功能站,含短信发送优惠卷功能等

【整站开发】老杨 一个整站开发2 大家看看有没有中意的功能

ecshop团购类开发:


ecshop 最新仿京东团购,含往期团购、最新团购、团购详情页相册等

ECSHOP仿走秀团购全功能

ECSHOP仿唯品会闪购全功能

ecshop功能类开发:


ecshop 支付宝、财付通、快钱‘银行直连’、'快捷支付'功能【分两种不同选择方式】

ecshop 可选套餐功能【全选送赠品功能+非全选并两个以上有折扣】很强大

ecshop仿京东 装机大师 最完善版(保存发布配置、后台管理等一系列完善功能)

ecshop 最完美全站多城市切换 后台管理 可扩展性强-【新增各个城市单独管理员,配合‘独立供货商’系统】

ecshop 商家管理 独立后台 商家只能单独管理自己的订单

ecshop 注册项强大功能开发(含不同注册类型、注册后台审核)

ECSHOP仿麦包包留言板全功能,带留言查询(输入email\qq\手机查询)

ECSHOP合作登录功能等大量插件

开发功能、开发技巧分享:

【共享】ecshop 仿淘宝加入购物车弹出框,非jquery,淡出淡隐效果,固定屏幕,兼容ie

【分享】ECSHOP QQ、新浪、支付宝、人人等合作登录功能插件 含后台设置功能(可选)

【分享】需要商品分类树显示商品总数的方法

【共享】商品详情页添加购买数量加减按钮[ 增加购物车页面数量加减按钮 添加的代码]

【分享】发现很多新手不知道拿了模板怎么用,老杨在这粗略的解答一下

【分享】ecshop加快载入速度,也是非常实用和炫丽的ecshop优化技巧-lazyload实用进阶

【分享】ecshop 添加本地视频播放(支持大部份视频格式)-视频播放插件


——老杨,承接一切ecshop二次开发、整站建设,QQ:359199843

回答:
讲的这么详细 大虾来的啊

没错。是的。。

了解一下呢

效果还不错

一直想加这个功能,不错。。。很实用,而且不麻烦!!!!!



请问老杨,如果我要在主分类(食品饮料)知道该主分类的总数量,要如何调用?
从上例中学习到,已解决

很 很好 不错 不错 楼主功德无量

已經調用出來,效果不錯

了解一下,我现在的太难看了

感谢分享,不错的

不错,支持!!

顶了!!!!!!!!!!