ecshop功能加入收藏目前只能單個的去收藏,但做項目需要我需要用戶可以一次選多個進行批量收藏,在網(wǎng)上找了很多沒找到可用的于是有了下面代碼.
現(xiàn)在正接觸著ecshop,最近也是邊學邊忙著做了一個案例,收獲還是挺大的,至少EC現(xiàn)在已經(jīng)摸熟了,今天分享一個將商品批量加入搜藏的功能,當時做的時候網(wǎng)上找了好多都沒找到合適的方法,最后還是自己做出來了,所以說,世上本沒有難題,搞清原理了,就什么都不是問題了.
我的思路是:在它自帶單個收藏的原理上,加個循環(huán)就解決一切了.
1.首先循環(huán)出要搜藏商品的id,用一個符號隔開,如 ‘12|5|8|’,到時候傳入php處理時候再用 explode() 函數(shù)按“|”分割開來,然后循環(huán)這些id,就可以實現(xiàn)了.
<a class="joinSave png" href="javascript:collect_all('{foreach from=$goods item=g}{$g.goods_id}|{/foreach}')">加入收藏夾</a> 經(jīng)過循環(huán)后就可以得到類似 <a class="joinSave png" href="javascript:collect_all('12|5|8|')">加入收藏夾</a> 的代碼了.
2.然后在 common.js 大概第130行有個 collect(goodsId) 函數(shù),就是添加到搜藏的函數(shù),可以仿照它在它下面添加一個:
/* *
* 批量添加商品到收藏夾
*/
function collect_all(AllId){
Ajax.call('user.php?act=collect_all', 'id=' + AllId, collectResponse, 'GET', 'JSON');
}
3.最后在 user.php 里面加入下面這段代碼就可以了.
/* 批量添加收藏商品(ajax) */
elseif ($action == 'collect_all'){
include_once(ROOT_PATH .'includes/cls_json.php');
$json = new JSON();
$result = array('error' => 0, 'message' => '');
$goods_id = $_GET['id'];
$goods_id = explode("|",$goods_id);
$goods_id = array_filter($goods_id); //過濾掉數(shù)組中空的值
if (!isset($_SESSION['user_id']) || $_SESSION['user_id'] == 0){
$result['error'] = 1;
$result['message'] = $_LANG['login_please'];
die($json->encode($result));
}
else{
foreach($goods_id as $goods_id){
/* 檢查是否已經(jīng)存在于用戶的收藏夾 */
$sql = "SELECT COUNT(*) FROM " .$GLOBALS['ecs']->table('collect_goods') .
" WHERE user_id='$_SESSION[user_id]' AND goods_id = '$goods_id'";
if ($GLOBALS['db']->GetOne($sql) > 0){}
else{
$time = gmtime();
$sql = "INSERT INTO " .$GLOBALS['ecs']->table('collect_goods'). " (user_id, goods_id, add_time) " .
" VALUES ('$_SESSION[user_id]', '$goods_id', '$time')";
if ($GLOBALS['db']->query($sql) === false){
$result['error'] = 1;
$result['message'] = $GLOBALS['db']->errorMsg();
die($json->encode($result));
}
}
}
$result['error'] = 0;
$result['message'] = $GLOBALS['_LANG']['collect_success'];
die($json->encode($result));
}
}
|
新聞熱點
疑難解答
圖片精選