A-A+

ecshop如何实现将商品批量加入收藏

2015年10月26日 编程技术 暂无评论

ecshop 是自带收藏商品功能的,只可惜只能一次收藏一个,相对于较大一点的购物站点,有可能一次就需要收藏多个商品,实现这样的操作也并不是很难的,只需要在 ecshop 自带收藏功能的基础上小小的更改一下即可,下面小虎博客就来教大家如何修改一下吧。

首先循环出要收藏商品的ID,用一个符号进行分隔开,比如‘12|5|8|’,到时候传入 PHP 处理的时候就可以使用 explode() 函数按“|”符号来进行分割分开,然后再进行循环这些ID,就可以实现了,代码如下:

  1. <a class="joinSave png" href="javascript:collect_all('{foreach from=$goods item=g}{$g.goods_id}|{/foreach}')">加入收藏夹  
  2.   
  3. </a> 经过循环后就可以得到类似 <a class="joinSave png" href="javascript:collect_all('12|5|8|')">加入收藏夹</a> 的代码了。  

接着打开 common.js,找到 collect(goodsId) 函数,这个就是收藏的函数了,我们可以仿照这个函数再重新添加一个函数,实例代码如下:

  1. /* * 
  2.  *   批量添加商品到收藏夹 
  3.  */  
  4. function collect_all(AllId){  
  5. Ajax.call('user.php?act=collect_all', 'id=' + AllId, collectResponse, 'GET', 'JSON');  
  6. }  

最后打开 user.php 文件,在这个文件里面添加如下代码:

  1. /* 批量添加收藏商品(ajax) */  
  2. elseif ($action == 'collect_all'){  
  3. include_once(ROOT_PATH .'includes/cls_json.php');  
  4. $json = new JSON();  
  5. $result = array('error' => 0, 'message' => '');  
  6. $goods_id = $_GET['id'];  
  7. $goods_id = explode("|",$goods_id);  
  8. $goods_id = array_filter($goods_id);    //过滤掉数组中空的值  
  9.   
  10. if (!isset($_SESSION['user_id']) || $_SESSION['user_id'] == 0){  
  11. $result['error'] = 1;  
  12. $result['message'] = $_LANG['login_please'];  
  13. die($json->encode($result));  
  14. }  
  15. else{  
  16. foreach($goods_id as $goods_id){  
  17. /* 检查是否已经存在于用户的收藏夹 */  
  18. $sql = "SELECT COUNT(*) FROM " .$GLOBALS['ecs']->table('collect_goods') .  
  19. " WHERE user_id='$_SESSION[user_id]' AND goods_id = '$goods_id'";  
  20. if ($GLOBALS['db']->GetOne($sql) > 0){}  
  21. else{  
  22. $time = gmtime();  
  23. $sql = "INSERT INTO " .$GLOBALS['ecs']->table('collect_goods'). " (user_id, goods_id, add_time) " .  
  24. " VALUES ('$_SESSION[user_id]', '$goods_id', '$time')";  
  25.   
  26. if ($GLOBALS['db']->query($sql) === false){  
  27. $result['error'] = 1;  
  28. $result['message'] = $GLOBALS['db']->errorMsg();  
  29. die($json->encode($result));  
  30. }  
  31. }  
  32. }  
  33. $result['error'] = 0;  
  34. $result['message'] = $GLOBALS['_LANG']['collect_success'];  
  35. die($json->encode($result));  
  36. }  
  37. }  

OK,做完这些就已经可以实现商品批量加入收藏的功能了。

标签:

给我留言