国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 網(wǎng)站 > 建站經(jīng)驗(yàn) > 正文

ecshop獲取當(dāng)前頁(yè)面下的子分類

2024-04-25 20:34:51
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

/**

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

*

* @access public

* @param integer $cat_id 分類編號(hào)

* @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;

}

/*

判斷當(dāng)前分類中全是是否是底級(jí)分類,

如果是取出底級(jí)分類上級(jí)分類,

如果不是取當(dāng)前分類及其下的子分類

*/

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

{

/* 獲取當(dāng)前分類及其子分類 */

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

}

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

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

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

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

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;//添加上這句是關(guān)鍵。

}

else

{

$parent_id = 0;

}

這時(shí)候 參數(shù)$cat_id是有效的!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南开区| 丁青县| 玛纳斯县| 渑池县| 闽清县| 新晃| 长子县| 定南县| 长沙县| 五原县| 黔西县| 桐城市| 南平市| 卢氏县| 阜新市| 涞源县| 丰原市| 丁青县| 平遥县| 威远县| 安远县| 万源市| 秭归县| 九江县| 商水县| 镇宁| 岢岚县| 莱州市| 和政县| 诏安县| 梓潼县| 拜泉县| 北京市| 穆棱市| 霞浦县| 扶风县| 沁源县| 常宁市| 裕民县| 新安县| 公主岭市|