ecshop商品分类树显示该分类下的商品数量

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

/**

* 获得指定分类同级的所有分类以及该分类下的子分类

*

* @access  public

* @param   integer     $cat_id     分类编号

* @return  array

*/

function get_categories_tree($cat_id = 0)

{

if ($cat_id > 0)

{

$sql = ‘SELECT parent_id FROM ‘ . $GLOBALS[‘ecs‘]->table(‘category‘) . " WHERE cat_id = ‘$cat_id‘";

$parent_id = $GLOBALS[‘db‘]->getOne($sql);

}

else

{

$parent_id = 0;

}

/*

判断当前分类中全是是否是底级分类,

如果是取出底级分类上级分类,

如果不是取当前分类及其下的子分类

*/

$sql = ‘SELECT count(*) FROM ‘ . $GLOBALS[‘ecs‘]->table(‘category‘) . " WHERE parent_id = ‘$parent_id‘ AND is_show = 1 ";

if ($GLOBALS[‘db‘]->getOne($sql) || $parent_id == 0)

{

/* 获取当前分类及其子分类 */

$sql = ‘SELECT cat_id,cat_name ,parent_id,is_show ‘ .

‘FROM ‘ . $GLOBALS[‘ecs‘]->table(‘category‘) .

"WHERE parent_id = ‘$parent_id‘ AND is_show = 1 ORDER BY sort_order ASC, cat_id ASC";

$res = $GLOBALS[‘db‘]->getAll($sql);

foreach ($res AS $row)

{

if ($row[‘is_show‘])

{

/*获得分类下商品总数 */

$children = get_children($row[‘cat_id‘]);

$sql = ‘SELECT count(*)‘ . "FROM " . $GLOBALS[‘ecs‘]->table(‘goods‘) . ‘ AS g ‘.

‘WHERE g.is_on_sale = 1 AND g.is_alone_sale = 1 AND ‘.

‘g.is_delete = 0 AND (‘ . $children . ‘OR ‘ . get_extension_goods($children) . ‘) ‘;

$cat_goods_num=$GLOBALS[‘db‘]->getOne($sql);

$cat_arr[$row[‘cat_id‘]][‘goods_num‘]   = $cat_goods_num == ‘‘ ? 0 : $cat_goods_num;

$cat_arr[$row[‘cat_id‘]][‘id‘]   = $row[‘cat_id‘];

$cat_arr[$row[‘cat_id‘]][‘name‘] = $row[‘cat_name‘];

$cat_arr[$row[‘cat_id‘]][‘url‘]  = build_uri(‘category‘, array(‘cid‘ => $row[‘cat_id‘]), $row[‘cat_name‘]);

if (isset($row[‘cat_id‘]) != NULL)

{

$cat_arr[$row[‘cat_id‘]][‘cat_id‘] = get_child_tree($row[‘cat_id‘]);

}

}

}

}

if(isset($cat_arr))

{

return $cat_arr;

}

}

function get_child_tree($tree_id = 0)

{

$three_arr = array();

$sql = ‘SELECT count(*) FROM ‘ . $GLOBALS[‘ecs‘]->table(‘category‘) . " WHERE parent_id = ‘$tree_id‘ AND is_show = 1 ";

if ($GLOBALS[‘db‘]->getOne($sql) || $tree_id == 0)

{

$child_sql = ‘SELECT cat_id, cat_name, parent_id, is_show ‘ .

‘FROM ‘ . $GLOBALS[‘ecs‘]->table(‘category‘) .

"WHERE parent_id = ‘$tree_id‘ AND is_show = 1 ORDER BY sort_order ASC, cat_id ASC";

$res = $GLOBALS[‘db‘]->getAll($child_sql);

foreach ($res AS $row)

{

/*获得分类下商品总数 */

$children = get_children($row[‘cat_id‘]);

$sql = ‘SELECT count(*)‘ . "FROM " . $GLOBALS[‘ecs‘]->table(‘goods‘) . ‘ AS g ‘.

‘WHERE g.is_on_sale = 1 AND g.is_alone_sale = 1 AND ‘.

‘g.is_delete = 0 AND (‘ . $children . ‘OR ‘ . get_extension_goods($children) . ‘) ‘;

$cat_goods_num=$GLOBALS[‘db‘]->getOne($sql);

$three_arr[$row[‘cat_id‘]][‘goods_num‘]   = $cat_goods_num == ‘‘ ? 0 : $cat_goods_num;

if ($row[‘is_show‘])

$three_arr[$row[‘cat_id‘]][‘id‘]   = $row[‘cat_id‘];

$three_arr[$row[‘cat_id‘]][‘name‘] = $row[‘cat_name‘];

$three_arr[$row[‘cat_id‘]][‘url‘]  = build_uri(‘category‘, array(‘cid‘ => $row[‘cat_id‘]), $row[‘cat_name‘]);

if (isset($row[‘cat_id‘]) != NULL)

{

$three_arr[$row[‘cat_id‘]][‘cat_id‘] = get_child_tree($row[‘cat_id‘]);

}

}

}

return $three_arr;

}

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

在{$cat.name}后添加:
({$cat.goods_num})

在{$child.name}后添加:
({$child.goods_num})

在{$childer.name}后添加:
({$childer.goods_num})

时间: 2024-10-02 14:07:42

ecshop商品分类树显示该分类下的商品数量的相关文章

ecshop首页调用某分类下的商品|assign_cat_goods()

ecshop首页调用分类下的商品其实很简单,也有模板设置那里可以设置,不过那个只可以用cat_goods.lib,不方便,所以我想看看怎么能简单的实现ecshop首页调用分类下的商品 只需要在index.php写上这么一句:assign_cat_goods(20,10); 其中20是分类id,10是调用的条数 assign_cat_goods这个函数是在includes/lib_goods.php里面的 然后就是ecshop模板里调用商品了 <!–{foreach from=$cat_goods

ectouch手机商城首页调用指定分类下的商品

ECTouch是国内市面上唯一开源的ECSHOP移动商城系统,为广大电商以最低的成本快速搭建移动商城.最近最一商城实例,手机版首页需要调用指定分类下的商品,ECtouch商城默认好像没有此调用方式,只能自己动手添加了. 方法如下: 1.打开mobile\include\apps\default\model\IndexModel.class.php 在最下面 } 之前添加以下代码 /**      * 获得指定分类下的商品      */      function assign_cat_good

ecshop商品列表页,循环显示当前分类的二级分类以及分类下的商品

1.includes\lib_goods.php,在最末尾添加几个function /** * 获得指定分类下的子分类 * * @access public * @param integer $cat_id 分类编号 * @return array */ function get_children_tree($cat_id) { if ($cat_id >0 ) { $sql = 'SELECT count(*) FROM ' . $GLOBALS['ecs']->table('categor

EcShop首页显示特定分类的精品新品热销特价等推荐商品

EcShop首页显示特定分类的精品新品热销特价等推荐商品 很多大型的B2C商城都有特定分类专区,该分类下的[分类名称].[推荐子分类 或 推荐品牌].[大图片/推荐单品].[推荐商品].[促销商品].[推荐商品/热销排行]等,这是基于SEO及用户体验来开发的.ECSHOP虽然有类似的功能,并且推荐商品还分[精品].[新品].[热销]三类,但灵活性不是很好,首页第一次加载的时候,无论是[精品].[新品]还是[热销]都不能指定分类,只能不分类别地显示所有.即使是在分类的设置里面有[设置为首页推荐:

转:ecshop商品分类页获取相册列表方法

ecshop商品分类页获取相册列表方法 很久之前就看到过你好在商品列表页有获取到相册列表,但是一直没有实践过,感觉应该挺简单的吧,但是最近手上的项目刚好就需要这个功能,然后就想到网上查下资料,至少找个思路就好办了,可是百度谷歌,居然没有找到任何答案.只是在百度知道看到有人提过这个问题,居然没有答案! 搜索这个线索断了,我们还有B计划,就是自己开发,哈哈.网上有人问过这个问题,但是回答的人就是说要二次开发啊什么的,当然,你好默认的功能没那么完善,需要我们进一步修改一下下,但是二次开发也不是说真的这

ecshop商品分类页获取相册列表方法

第1步:找到根目录的category.php文件,查找约:486行左右(注意这不是准确位置,看实际的哦),找到这个函数: /** * 获得分类下的商品 * * @access public * @param string $children * @return array */ function category_get_goods($children, $brand, $min, $max, $ext, $size, $page, $sort, $order) ……以下代码省略. 然后在这个函

ECSHOP始终显示全部分类方法

商品分类树需要始终显示所有类别,默认的Ecshop的显示方式为在当前产品页面只显示当前的产品所在的同级及下级分类,这就导致当点开某个产品或者子分 类的时候全局的分类树就不见了. 其实修改的方法很简单.只需要分别将goods.php和category.php文件中的 $smarty->assign('categories',         get_categories_tree($goods['cat_id'])); 改为 $smarty->assign('categories',      

ecshop首页调用指定商品分类下的商品品牌列表

转之--http://www.16css.com/ecshop/735.html 通过二次开发可以实现ECSHOP首页调用指定分类下的品牌列表. 第一步: 打开根目录下的index.php 在最后面 ?> 前面加入以下代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 /** * 获得某个分类下的品牌 列表 * * @access  public * @param   int     $cat * @return 

ThinkCMF(二):多个分类下的文章显示并分页;

一.查找多个分类下的文章放在一个页面显示并分类where:id in(1,2,3); <php> $posts=sp_sql_posts_paged('field:post_title,post_date,object_id,term_id;order:post_date desc;where:term_id in(1,2,3)'); </php> <foreach name="posts['posts']" item="v">