请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

ecshop商品详情页显示当前商品所在分类的同级分类或者下级子分类

最近帮一个客户定制网站时,在ECSHOP的商品详情页里,需要在详情页里显示当前商品所在分类的同级分类,如果当前分类有子分类时,直接显示子分类,没有子分类时,就显示当前分类的同级分类,模板之家小编就写了如下些语句即可实现相应要求。

打开goods.php,找到如下代码:
  1. $smarty->assign('goods_rank',          get_goods_rank($goods_id));
复制代码

在这段代码的下面添加如下代码:
  1.                 /*获得当前栏目id*/
  2.                 $sql= "select cat_id from ".$GLOBALS['ecs']->table('goods')."where goods_id ='".$goods_id."'";
  3.                 $thiscat_id = $GLOBALS['db']->getOne($sql);
  4.                 /*获得当前栏目id end*/
  5.         $smarty->assign('get_children_goods',  get_children_tree($thiscat_id));
复制代码

在goods.php文件的末尾的倒数第二行添加如下代码:
  1. /**
  2. * 获得指定分类下的子分类
  3. *
  4. * @access  public
  5. * @param   integer     $cat_id     分类编号
  6. * @return  array
  7. */
  8. function get_children_tree($cat_id)
  9. {
  10.      if ($cat_id >0 )
  11.     {
  12.         $sql = 'SELECT count(*) FROM ' . $GLOBALS['ecs']->table('category') . " WHERE parent_id = '$cat_id'";
  13.         if ($GLOBALS['db']->getOne($sql))
  14.         {
  15.             // 获取当前分类名及其子类
  16.             $sql = 'SELECT a.cat_id, a.cat_name, a.sort_order AS parent_order, a.cat_id, b.is_show, ' .
  17.                     'b.cat_id AS child_id, b.cat_name AS child_name, b.sort_order AS child_order ' .
  18.                 'FROM ' . $GLOBALS['ecs']->table('category') . ' AS a ' .
  19.                 'LEFT JOIN ' . $GLOBALS['ecs']->table('category') . ' AS b ON b.parent_id = a.cat_id ' .
  20.                 "WHERE a.cat_id = '$cat_id' and b.is_show = 1 ORDER BY a.sort_order ASC, a.cat_id ASC";
  21.         }        
  22.         else
  23.         {
  24.             $sql = 'SELECT parent_id FROM ' . $GLOBALS['ecs']->table('category') . " WHERE cat_id = '$cat_id'";
  25.             $parent_id = $GLOBALS['db']->getOne($sql);
  26.             if ($parent_id > 0)
  27.             {
  28.                 //获取当前分类、兄弟及其父类
  29.                 $sql = 'SELECT a.cat_id, a.cat_name, b.is_show, b.cat_id AS child_id, b.cat_name AS child_name, b.sort_order ' .
  30.                     'FROM ' . $GLOBALS['ecs']->table('category') . ' AS a ' .
  31.                     'LEFT JOIN ' . $GLOBALS['ecs']->table('category') . ' AS b ON b.parent_id = a.cat_id ' .
  32.                     "WHERE b.parent_id = '$parent_id' and b.is_show = 1 ORDER BY sort_order ASC, a.cat_id ASC";
  33.             }
  34.             else
  35.             {
  36.                 //获取当前分类
  37.                 $sql = 'SELECT a.cat_id, a.cat_name FROM '
  38.                         . $GLOBALS['ecs']->table('category') . ' AS a ' .
  39.                         "WHERE a.cat_id = '$cat_id'";
  40.             }
  41.         }
  42.         
  43.         
  44.         $res = $GLOBALS['db']->getAll($sql);

  45.     $cat_arr = array();
  46.     foreach ($res AS $row)
  47.     {
  48.         $cat_arr[$row['cat_id']]['id']   = $row['cat_id'];
  49.         $cat_arr[$row['cat_id']]['name'] = $row['cat_name'];
  50.         $cat_arr[$row['cat_id']]['url']  = build_uri('category', array('cid' => $row['cat_id']), $row['cat_name']);

  51.         if ($row['child_id'] != NULL)
  52.         {
  53.             $cat_arr[$row['cat_id']]['children'][$row['child_id']]['id']   = $row['child_id'];
  54.             $cat_arr[$row['cat_id']]['children'][$row['child_id']]['name'] = $row['child_name'];
  55.             $cat_arr[$row['cat_id']]['children'][$row['child_id']]['url']  = build_uri('category', array('cid' => $row['child_id']), $row['child_name']);
  56.         }
  57.     }

  58.     return $cat_arr;
  59.     }   
  60. }
复制代码

接下在模板文件goods.dwt或者goods.dwt引用的lbi文件里套用如下代码:
  1.     <!--{foreach from=$get_children_goods item=cat}-->
  2.      <dl>
  3.      <!--{foreach from=$cat.children item=child name=child}-->
  4.      <dt><a href="{$child.url}">{$child.name|escape:html}</a></dt>
  5.      <!--{/foreach}-->
  6.        </dl>
  7.     <!--{/foreach}-->
复制代码

备注:模板套用代码需要根据自身情况而定,循环代码参照以上即可。

回复

使用道具 举报

大神点评1

善登州胜 2014-12-31 13:44:12 显示全部楼层
我来了~~~嘿嘿~~












液体密度计
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

    热门帖子
  • 精华
  • 新帖
快速回复 返回顶部 返回列表