麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網站 > 建站經驗 > 正文

ecshop獲取當前頁面下的子分類

2024-04-25 20:34:51
字體:
來源:轉載
供稿:網友

ecshop的商品分類頁面category.php 下的分類,默認是取得所有同級父分類以及父類別的子分類。比如,我點擊進入是A商品分類的頁面 category.php?id=1,事實上 我只需要取得父ID為1的子分類即可,但是ecshop也把B商品分類、C商品分類.....下的所有子分類也輸出來了。這是沒必要的。在ecshop下的category.php 334行 $smarty->assign('categories', get_categories_tree($cat_id)); // 本身也是要起到這個作用,但是徐然有參數$cat_id,但是當$cat_id為頂級分類時候,該參數是無效的。為什么呢?我們來看一下 get_categories_tree( )這個函數(該函數在目錄includes/lib_goods.php下)。如下:

/**

* 獲得指定分類同級的所有分類以及該分類下的子分類

*

* @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'])

{

$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;

}

}

問題就在這一句

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;

}

這一句是判斷參數$cat_id是否有父類,若是有父類,就取出其父類的ID,否則視為參數為父類別ID為0,也即為頂級分類。事實上,當參數$cat_id大于0,并且為頂級分類的時候,這句話是無效的,我們假設$cat_id=1,且ID1為頂級ID,也即其parent_id 為0,這種情況下

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

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

運行得出的值還是0,也即$parent_id =0.雖然有參數,但還是取出所有頂級ID下的所有分類。實際上只需要這樣修改即可,把

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;

}

修改為

if ($cat_id > 0)

{

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

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

if($parent_id==0)$parent_id=$cat_id;//添加上這句是關鍵。

}

else

{

$parent_id = 0;

}

這時候 參數$cat_id是有效的!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久精品视频免费看 | 在线a毛片免费视频观看 | 国产成人在线免费观看视频 | 视频一区 在线 | 最新福利在线 | 成人电影毛片 | 免费a级毛片永久免费 | 国产午夜精品一区二区三区嫩草 | 国产91亚洲精品一区二区三区 | 国产pron | 久久久av亚洲男天堂 | 日韩电影一区二区 | fc2成人免费人成在线观看播放 | 看黄在线 | 国产视频在线观看一区二区三区 | 国产欧美日韩在线不卡第一页 | 国产免费一区二区三区在线能观看 | 欧美性色黄大片www 操碰网 | 成人在线免费观看小视频 | 国产做爰| 欧美日韩一区,二区,三区,久久精品 | 久久精品资源 | 末成年女av片一区二区 | 精品亚洲一区二区 | 欧美成人性生活片 | 毛片免费视频播放 | 操你啦免费视频 | 男女做性免费网站 | 爱视频福利 | 国产一国产一级毛片视频 | 亚洲91网 | 日韩av片在线播放 | 欧美精品一区二区三区在线 | 国产日产精品一区二区三区四区 | 毛片区 | 亚洲一区国产二区 | 成人9禁啪啪无遮挡免费 | 日韩免费黄色 | av电影免费在线看 | 久色精品 | 欧美视频一二三区 |