php商品三级分类,ECSHOP商品分类显示三级商品分类菜单方法

第一步:修改/include/lib_goods.php,在第24行加入以下代码:/*** 获得指定分类下的子分类** @access  public* @param   integer     $cat_id     分类编号* @return  array*www.ecshop119.com*/function get_children_tree($cat_id){if ($cat_id >0 ){$sql = 'SELECT count(*) FROM ' . $GLOBALS['ecs']->table('category') . " WHERE parent_id = '$cat_id'";//$cot = $GLOBALS['db']->getOne($sql);if ($GLOBALS['db']->getOne($sql)){// 获取当前分类名及其子类$sql = 'SELECT a.cat_id, a.cat_name, a.sort_order AS parent_order, a.cat_id, ' .'b.cat_id AS child_id, b.cat_name AS child_name, b.sort_order AS child_order ' .'FROM ' . $GLOBALS['ecs']->table('category') . ' AS a ' .'LEFT JOIN ' . $GLOBALS['ecs']->table('category') . ' AS b ON b.parent_id = a.cat_id ' ."WHERE a.cat_id = '$cat_id' ORDER BY parent_order ASC, a.cat_id ASC, child_order ASC";}else{$sql = 'SELECT parent_id FROM ' . $GLOBALS['ecs']->table('category') . " WHERE cat_id = '$cat_id'";$parent_id = $GLOBALS['db']->getOne($sql);if ($parent_id > 0){//获取当前分类、兄弟及其父类$sql = 'SELECT a.cat_id, a.cat_name, b.cat_id AS child_id, b.cat_name AS child_name, b.sort_order ' .'FROM ' . $GLOBALS['ecs']->table('category') . ' AS a ' .'LEFT JOIN ' . $GLOBALS['ecs']->table('category') . ' AS b ON b.parent_id = a.cat_id ' ."WHERE b.parent_id = '$parent_id' ORDER BY sort_order ASC";}else{//获取当前分类$sql = 'SELECT a.cat_id, a.cat_name FROM '. $GLOBALS['ecs']->table('category') . ' AS a ' ."WHERE a.cat_id = '$cat_id'";}}$res = $GLOBALS['db']->getAll($sql);$cat_arr = array();foreach ($res AS $row){$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 ($row['child_id'] !NULLbr />         {$cat_arr[$row['cat_id']]['children'][$row['child_id']]['id']   = $row['child_id'];$cat_arr[$row['cat_id']]['children'][$row['child_id']]['name'] = $row['child_name'];$cat_arr[$row['cat_id']]['children'][$row['child_id']]['url']  = build_uri('category', array('cid' => $row['child_id']), $row['child_name']);}}return $cat_arr;}}这其实就是一个get_children_tree函数,更具$cat_id来得到当前分类所有的分类第二步,修改/category.php,找到122行,原先的代码是:$smarty->assign('categories',       get_categories_tree($cat_id)); // 分类树这其实是模板技术,如果你想彻底抛弃原来的分类样式,那么把get_categories_tree($cat_id)换成刚才我们自定义的函数get_children_tree($cat_id)如果你想保留原先的分类功能,再新增自定义的分类功能,那么在122行下面再新增一行:$smarty->assign('categories2',       get_children_tree($cat_id));如果想用不同的颜色表示出当前点击的分类和其他分类,那么还要保留当前点击的分类id。再加一行:$smarty->assign('current_cat_id',    $cat_id);    //当前的id最后一步修改category.dwt。你要根据第二部定义的模板变量来写:到底是categories还是categories2,更具你实际情况来定。我这里是categories2:{$cat.name|escape:html} · {$child.name|escape:html}· 没有分类了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值