欢迎光临一流素材网,免积分免费素材下载!
当前位置:首页 > 教程 > CMS教程>Ecshop

Ecshop调用当前商品分类下子分类(无子分类显示同级分类/当前分类高亮)

所属栏目:Ecshop更新时间:2017-10-09 来源:网络 原作者:不详 发布:deepdfhy浏览:0

免费开源可商用的PHP万能建站程序-DiYunCMS(帝云CMS)

Ecshop默认的商品分类调用会把其它分类下的子分类全部调用出来。

通过本教程可以实现只调用当前分类下子分类,如果不存在子分类,则显示同级别分类,并且当前分类高亮


例如,打开“太阳眼镜”分类下,有下面3个分类

blob.png

再打开其它任意一个子分类,如下效果

blob.png


第一步:打开 /include/lib_goods.php,在合适位置添加以下代码

比如在 function get_categories_tree($cat_id = 0) { 这行代码上面

/**
 * 获得指定分类下的子分类
 *
 * @access  public
 * @param   integer     $cat_id     分类编号
 * @return  array
 */
 function get_children_tree_b($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'] != NULL)
        {
            $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;
    }    
 }


第二步:打开category.php文件

查找:

$smarty->assign('categories',       get_categories_tree($cat_id)); // 分类树

在下面添加以下代码:

$smarty->assign('categories2',       get_children_tree_b($cat_id));
$smarty->assign('current_cat_id',    $cat_id);    //当前的id


最后在 dwt或lbi中使用如下代码调用:

<!--{foreach from=$categories2 item=cat}-->
<a href="category-{$cat.id|escape:html}-b0.html"<!--{if $current_cat_id eq $cat.id}--> class="curr"<!--{/if}-->>{$cat.name|escape:html}</a>
{$cat.name|escape:html}
     <!--{foreach from=$cat.children item=child}-->
      <li<!--{if $current_cat_id eq $child.id}--> class="curr"<!--{/if}-->><a href="{$child.url}">{$child.name|escape:html}</a></li>

      <!--{/foreach}--> 
<!--{/foreach}-->


标签:
收藏 0 有帮助 0 没帮助 0 打赏 0
相关教程
给个评价吧
百度云加速250x250