ECShop将商品批量加入收藏的方法
1、循环获取要收藏的商品ID:
使用PHP的explode()
函数,以特定符号(如“|”)分割商品ID字符串。'12|5|8|'
。
2、修改common.js文件:
在common.js
文件中找到collect(goodsId)
函数,大约在第130行。
添加一个新的函数collect_all(AllId)
来处理批量收藏请求。
3、更新user.php文件:
在user.php
文件中添加处理批量收藏的逻辑,代码示例如下:
```php
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); //过滤掉数组中空的值
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){
/* 检查是否已经存在于用户的收藏夹 */
$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));
}
}
```
4、前端调用批量收藏功能:
在HTML模板文件中,添加一个链接或按钮,调用collect_all()
函数并传入商品ID字符串。
```html
<a class="joinSave png" href="javascript:collect_all('12|5|8|')">加入收藏夹</a>
```
相关问题与解答
1、如何确保用户已登录才能进行批量收藏操作?
在user.php
中的批量收藏逻辑前,通过检查$_SESSION['user_id']
来判断用户是否已登录,如果未登录,返回登录提示信息。
2、如何处理重复收藏同一商品的情况?
在插入收藏记录前,通过SQL查询检查该商品是否已存在于用户的收藏夹中,如果已存在,则不再插入新记录。
通过以上步骤和解答,您可以实现ECShop中商品的批量收藏功能,提升用户体验和操作效率。
到此,以上就是小编对于“ecshop将商品批量加入收藏的方法”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。