EcShop首頁顯示特定分類的精品新品熱銷特價等推薦商品


EcShop首頁顯示特定分類的精品新品熱銷特價等推薦商品
很多大型的B2C商城都有特定分類專區,該分類下的【分類名稱】、【推薦子分類 或 推薦品牌】、【大圖片/推薦單品】、【推薦商品】、【促銷商品】、【推薦商品/熱銷排行】等,這是基於SEO及用戶體驗來開發的。
ECSHOP雖然有類似的功能,並且推薦商品還分[精品]、[新品]、[熱銷]三類,但靈活性不是很好,首頁第一次加載的時候,無論是[精品]、[新品]還是[熱銷]都不能指定分類,只能不分類別地顯示所有。
即使是在分類的設置里面有【設置為首頁推薦: 精品 最新 熱門】,但這個【設置為首頁推薦】的分類的內容不能在首頁第一次加載時顯示,需要在首頁顯示后,用ajax讀取(觸發ajax請求的通常是鼠標onclick/onmouseover事件)。
也就是說這種方法能夠指定商品,但不能指定分類
ECSHOP提供了一種可以在首頁第一次加載時就顯示特定分類下的商品的方法,就是在后台的“設置模板 ”->添加“[+] 分類下的商品”進行設置。這種方式能夠指定分類,但不能夠指定商品。
要實現指定分類同時指定商品,需要進行二次開發,下面就是夏日博客通過網絡上的一些常見解決方法改良的解決方案。此代碼優勢在只需要填寫大類ID,此大類下的所有子類(包括三級分類)的指定類型商品都會調用出來,而且不會在最新發布的商品里出現精品或熱銷的商品!
1、首先打開includes/lib_goods.php,在最后添加以下函:

/**
* 取指定分類ID及類型的商品信息
* @access public
* @param string $cat_id 分類ID
* @param string $num 顯示商品數量
* @param string $cat_type 顯示商品類型 new新品,hot熱銷,best為精品,promote特價
* @return array
*/
function index_get_cat_id_goods_list($cat_id = '', $num = '',$cat_type='')
{
$sql = 'Select g.goods_id, g.cat_id,c.parent_id, g.goods_name, g.goods_name_style, g.market_price, g.shop_price AS org_price, g.promote_price, ' .
"IFNULL(mp.user_price, g.shop_price * '$_SESSION[discount]') AS shop_price, ".
"promote_start_date, promote_end_date, g.goods_brief, g.goods_thumb, goods_img, " .
"g.is_best, g.is_new, g.is_hot, g.is_promote " .
'FROM ' . $GLOBALS['ecs']->table('goods') . ' AS g ' .
'LEFT JOIN ' . $GLOBALS['ecs']->table('category') . ' AS c ON c.cat_id = g.cat_id ' .
"LEFT JOIN " . $GLOBALS['ecs']->table('member_price') . " AS mp ".
"ON mp.goods_id = g.goods_id AND mp.user_rank = '$_SESSION[user_rank]' ".
"Where g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 ".
$sql .= " AND (c.parent_id =" . $cat_id. " or g.cat_id = " . $cat_id ." or g.cat_id ". db_create_in(array_unique(array_merge(array($cat_id), array_keys(cat_list($cat_id, 0, false))))) .")";
if($cat_type!=''){
$sql .=" and is_".$cat_type."=1";
}else{
$sql .=" and is_best=0 and is_new=0 and is_hot=0 and is_promote=0";
}
$sql .= " order by g.goods_id desc LIMIT $num";
$res = $GLOBALS['db']->getAll($sql);
$goods = array();
foreach ($res AS $idx => $row)
{
$goods[$idx]['id'] = $row['article_id'];
$goods[$idx]['id'] = $row['goods_id'];
$goods[$idx]['name'] = $row['goods_name'];
$goods[$idx]['brief'] = $row['goods_brief'];
$goods[$idx]['brand_name'] = $row['brand_name'];
$goods[$idx]['goods_style_name'] = add_style($row['goods_name'],$row['goods_name_style']);
$goods[$idx]['short_name'] = $GLOBALS['_CFG']['goods_name_length'] > 0 ?
sub_str($row['goods_name'], $GLOBALS['_CFG']['goods_name_length']) : $row['goods_name'];
$goods[$idx]['short_style_name'] = add_style($goods[$idx]['short_name'],$row['goods_name_style']);
$goods[$idx]['market_price'] = price_format($row['market_price']);
$goods[$idx]['shop_price'] = price_format($row['shop_price']);
$goods[$idx]['thumb'] = empty($row['goods_thumb']) ? $GLOBALS['_CFG']['no_picture'] : $row['goods_thumb'];
$goods[$idx]['goods_img'] = empty($row['goods_img']) ? $GLOBALS['_CFG']['no_picture'] : $row['goods_img'];
$goods[$idx]['url'] = build_uri('goods', array('gid' => $row['goods_id']), $row['goods_name']);
}
return $goods;
}

 


2、然后在index.php里設置模板顯示數據,其中下面的1為分類ID,5為顯示數量
// new新品,hot熱銷,best為精品,promote特價
$smarty->assign('cat_id1_new_goods', index_get_cat_id_goods_list(1,5));
$smarty->assign('cat_id1_hot_goods', index_get_cat_id_goods_list(1,2,’hot’));
3、最后在首頁模板themes/default/index.dwt里循環顯示數據


這個代碼實例里調用顯示的分別為最新商品及熱銷商品。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM