当前位置:首页 > CMS教程 > ecshop > 列表

ecshop增加购买直接进入购物车与默认购物流程并存

发布:smiling 来源: PHP粉丝网  添加日期:2014-06-18 16:39:16 浏览: 评论:0 

ecshop如何设置了购买停留在商品页面之后,将ecshop商品加入购物车的时候,就不会直接进入购物车,这样使用购物车非常不方便,我们为了既保持该页面功能,又能进入购物车功能,所以增加了另外一个购买按扭,点购买之后,可以直接进入ecshop的购物车,这样只牵涉到修改ecshop模板,对ecshop二次开发稍微修改就可以做到.

1:goods.dwt模板

<a href="javascript:addToCart1({$goods.goods_id})"><img src="images/bnt_cat.gif" />

2:js/common.js

  1. function addToCart1(goodsId, parentId) 
  2.   var goods        = new Object(); 
  3.   var spec_arr     = new Array(); 
  4.   var fittings_arr = new Array(); 
  5.   var number       = 1; 
  6.   var formBuy      = document.forms['ECS_FORMBUY']; 
  7.   var quick     = 0; 
  8.   // 检查是否有商品规格  
  9.   if (formBuy) 
  10.   { 
  11.     spec_arr = getSelectedAttributes(formBuy); 
  12.     if (formBuy.elements['number']) 
  13.     { 
  14.       number = formBuy.elements['number'].value; 
  15.     } 
  16.  quick = 1; 
  17.   } 
  18.   goods.quick    = quick; 
  19.   goods.spec     = spec_arr; 
  20.   goods.goods_id = goodsId; 
  21.   goods.number   = number; 
  22.   goods.parent   = (typeof(parentId) == "undefined") ? 0 : parseInt(parentId); 
  23.   Ajax.call('flow.php?step=add_to_cart1''goods=' + goods.toJSONString(), addToCartResponse1, 'POST''JSON'); 
  24. function addToCartResponse1(result) 
  25.   if (result.error > 0) 
  26.   { 
  27.     // 如果需要缺货登记,跳转 
  28.     if (result.error == 2) 
  29.     { 
  30.       if (confirm(result.message)) 
  31.       { 
  32.         location.href = 'user.php?act=add_booking&id=' + result.goods_id + '&spec=' + result.product_spec; 
  33.       } 
  34.     } 
  35.     // 没选规格,弹出属性选择框 
  36.     else if (result.error == 6) 
  37.     { 
  38.       openSpeDiv(result.message, result.goods_id, result.parent); 
  39.     } 
  40.     else 
  41.     { 
  42.       alert(result.message); 
  43.     } 
  44.   } 
  45.   else 
  46.   { 
  47.     var cartInfo = document.getElementById('ECS_CARTINFO'); 
  48.     var cart_url = 'flow.php?step=cart'
  49.     if (cartInfo) 
  50.     { 
  51.       cartInfo.innerHTML = result.content; 
  52.     } 
  53.  location.href = cart_url; 
  54.      
  55.   } 

3:flow.php

  1. elseif ($_REQUEST['step'] == 'add_to_cart1'
  2.     include_once('includes/cls_json.php'); 
  3.     $_POST['goods'] = json_str_iconv($_POST['goods']); 
  4.     if (!emptyempty($_REQUEST['goods_id']) && emptyempty($_POST['goods'])) 
  5.     { 
  6.         if (!is_numeric($_REQUEST['goods_id']) || intval($_REQUEST['goods_id']) <= 0) 
  7.         { 
  8.             ecs_header("Location:./\n"); 
  9.         } 
  10.         $goods_id = intval($_REQUEST['goods_id']); 
  11.         exit
  12.     } 
  13.     $result = array('error' => 0, 'message' => '''content' => '''goods_id' => ''); 
  14.     $json  = new JSON; 
  15.     if (emptyempty($_POST['goods'])) 
  16.     { 
  17.         $result['error'] = 1; 
  18.         die($json->encode($result)); 
  19.     } 
  20.     $goods = $json->decode($_POST['goods']); 
  21.     /* 检查:如果商品有规格,而post的数据没有规格,把商品的规格属性通过JSON传到前台 */ 
  22.     if (emptyempty($goods->spec) AND emptyempty($goods->quick)) 
  23.     { 
  24.         $sql = "SELECT a.attr_id, a.attr_name, a.attr_type, "
  25.             "g.goods_attr_id, g.attr_value, g.attr_price " . 
  26.         'FROM ' . $GLOBALS['ecs']->table('goods_attr') . ' AS g ' . 
  27.         'LEFT JOIN ' . $GLOBALS['ecs']->table('attribute') . ' AS a ON a.attr_id = g.attr_id ' . 
  28.         "WHERE a.attr_type != 0 AND g.goods_id = '" . $goods->goods_id . "' " . 
  29.         'ORDER BY a.sort_order, g.attr_price, g.goods_attr_id'
  30.         $res = $GLOBALS['db']->getAll($sql); 
  31.         if (!emptyempty($res)) 
  32.         { 
  33.             $spe_arr = array(); 
  34.             foreach ($res AS $row
  35.             { 
  36.                 $spe_arr[$row['attr_id']]['attr_type'] = $row['attr_type']; 
  37.                 $spe_arr[$row['attr_id']]['name']     = $row['attr_name']; 
  38.                 $spe_arr[$row['attr_id']]['attr_id']     = $row['attr_id']; 
  39.                 $spe_arr[$row['attr_id']]['values'][] = array
  40.                                                             'label'        => $row['attr_value'], 
  41.                                                             'price'        => $row['attr_price'], 
  42.                                                             'format_price' => price_format($row['attr_price'], false), 
  43.                                                             'id'           => $row['goods_attr_id']); 
  44.             } 
  45.             $i = 0; 
  46.             $spe_array = array(); 
  47.             foreach ($spe_arr AS $row
  48.             { 
  49.                 $spe_array[]=$row
  50.             } 
  51.             $result['error']   = ERR_NEED_SELECT_ATTR; 
  52.             $result['goods_id'] = $goods->goods_id; 
  53.             $result['parent'] = $goods->parent; 
  54.             $result['message'] = $spe_array
  55.             die($json->encode($result)); 
  56.         } 
  57.     } 
  58.  
  59.     /* 检查:商品数量是否合法 */ 
  60.     if (!is_numeric($goods->number) || intval($goods->number) <= 0) 
  61.     { 
  62.         $result['error']   = 1; 
  63.         $result['message'] = $_LANG['invalid_number']; 
  64.     } 
  65.     /* 更新:购物车 */ 
  66.     else 
  67.     { 
  68.         // 更新:添加到购物车 
  69.         if (addto_cart($goods->goods_id, $goods->number, $goods->spec, $goods->parent)) 
  70.         { 
  71.             if ($_CFG['cart_confirm'] > 2) 
  72.             { 
  73.                 $result['message'] = ''
  74.             } 
  75.             else 
  76.             { 
  77.                 $result['message'] = $_CFG['cart_confirm'] == 1 ? $_LANG['addto_cart_success_1'] : $_LANG['addto_cart_success_2']; 
  78.             } 
  79.             $result['content'] = insert_cart_info(); 
  80.             $result['one_step_buy'] = $_CFG['one_step_buy']; 
  81.         } 
  82.         else 
  83.         { 
  84.             $result['message']  = $err->last_message(); 
  85.             $result['error']    = $err->error_no; 
  86.             $result['goods_id'] = stripslashes($goods->goods_id); 
  87.             if (is_array($goods->spec)) 
  88.             { 
  89.                 $result['product_spec'] = implode(','$goods->spec); 
  90.             } 
  91.             else 
  92.             { 
  93.                 $result['product_spec'] = $goods->spec; 
  94.             } 
  95.         } 
  96.     } 
  97.     $result['confirm_type'] =3; 
  98.     die($json->encode($result)); 

Tags: ecshop增加购买 购物流程

分享到:

相关文章