ecshop增加点击购买直接进入购物车

本文介绍了如何在ECShop中设置一个额外的购买按钮,使得用户可以直接从商品页面购买商品并立即进入购物车,而不必停留在当前页面。此功能通过修改模板和JavaScript代码实现,确保了购物体验的便捷性和页面功能的保留。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ecshop增加点击购买直接进入购物车

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

function addToCart1(goodsId, parentId)

{

  var goods        = new Object();

  var spec_arr     = new Array();

  var fittings_arr = new Array();

  var number       = 1;

  var formBuy      = document.forms['ECS_FORMBUY'];

  var quick     = 0;

  // 检查是否有商品规格 

  if (formBuy)

  {

    spec_arr = getSelectedAttributes(formBuy);

    if (formBuy.elements['number'])

    {

      number = formBuy.elements['number'].value;

    }

 quick = 1;

  }

  goods.quick    = quick;

  goods.spec     = spec_arr;

  goods.goods_id = goodsId;

  goods.number   = number;

  goods.parent   = (typeof(parentId) == "undefined") ? 0 : parseInt(parentId);

  Ajax.call('flow.php?step=add_to_cart1', 'goods=' + goods.toJSONString(), addToCartResponse1, 'POST', 'JSON');

}

function addToCartResponse1(result)

{

  if (result.error > 0)

  {

    // 如果需要缺货登记,跳转

    if (result.error == 2)

    {

      if (confirm(result.message))

      {

        location.href = 'user.php?act=add_booking&id=' + result.goods_id + '&spec=' + result.product_spec;

      }

    }

    // 没选规格,弹出属性选择框

    else if (result.error == 6)

    {

      openSpeDiv(result.message, result.goods_id, result.parent);

    }

    else

    {

      alert(result.message);

    }

  }

  else

  {

    var cartInfo = document.getElementById('ECS_CARTINFO');

    var cart_url = 'flow.php?step=cart';

    if (cartInfo)

    {

      cartInfo.innerHTML = result.content;

    }

 location.href = cart_url;

  }

}

3:flow.php

elseif ($_REQUEST['step'] == 'add_to_cart1')

{

    include_once('includes/cls_json.php');

    $_POST['goods'] = json_str_iconv($_POST['goods']);

    if (!empty($_REQUEST['goods_id']) && empty($_POST['goods']))

    {

        if (!is_numeric($_REQUEST['goods_id']) || intval($_REQUEST['goods_id']) <= 0)

        {

            ecs_header("Location:./\n");

        }

        $goods_id = intval($_REQUEST['goods_id']);

        exit;

    }

    $result = array('error' => 0, 'message' => '', 'content' => '', 'goods_id' => '');

    $json  = new JSON;

    if (empty($_POST['goods']))

    {

        $result['error'] = 1;

        die($json->encode($result));

    }

    $goods = $json->decode($_POST['goods']);

    /* 检查:如果商品有规格,而post的数据没有规格,把商品的规格属性通过JSON传到前台 */

    if (empty($goods->spec) AND empty($goods->quick))

    {

        $sql = "SELECT a.attr_id, a.attr_name, a.attr_type, ".

            "g.goods_attr_id, g.attr_value, g.attr_price " .

        'FROM ' . $GLOBALS['ecs']->table('goods_attr') . ' AS g ' .

        'LEFT JOIN ' . $GLOBALS['ecs']->table('attribute') . ' AS a ON a.attr_id = g.attr_id ' .

        "WHERE a.attr_type != 0 AND g.goods_id = '" . $goods->goods_id . "' " .

        'ORDER BY a.sort_order, g.attr_price, g.goods_attr_id';

        $res = $GLOBALS['db']->getAll($sql);

        if (!empty($res))

        {

            $spe_arr = array();

            foreach ($res AS $row)

            {

                $spe_arr[$row['attr_id']]['attr_type'] = $row['attr_type'];

                $spe_arr[$row['attr_id']]['name']     = $row['attr_name'];

                $spe_arr[$row['attr_id']]['attr_id']     = $row['attr_id'];

                $spe_arr[$row['attr_id']]['values'][] = array(

                                                            'label'        => $row['attr_value'],

                                                            'price'        => $row['attr_price'],

                                                            'format_price' => price_format($row['attr_price'], false),

                                                            'id'           => $row['goods_attr_id']);

            }

            $i = 0;

            $spe_array = array();

            foreach ($spe_arr AS $row)

            {

                $spe_array[]=$row;

            }

            $result['error']   = ERR_NEED_SELECT_ATTR;

            $result['goods_id'] = $goods->goods_id;

            $result['parent'] = $goods->parent;

            $result['message'] = $spe_array;

            die($json->encode($result));

        }

    }

    /* 检查:商品数量是否合法 */

    if (!is_numeric($goods->number) || intval($goods->number) <= 0)

    {

        $result['error']   = 1;

        $result['message'] = $_LANG['invalid_number'];

    }

    /* 更新:购物车 */

    else

    {

        // 更新:添加到购物车

        if (addto_cart($goods->goods_id, $goods->number, $goods->spec, $goods->parent))

        {

            if ($_CFG['cart_confirm'] > 2)

            {

                $result['message'] = '';

            }

            else

            {

                $result['message'] = $_CFG['cart_confirm'] == 1 ? $_LANG['addto_cart_success_1'] : $_LANG['addto_cart_success_2'];

            }

            $result['content'] = insert_cart_info();

            $result['one_step_buy'] = $_CFG['one_step_buy'];

        }

        else

        {

            $result['message']  = $err->last_message();

            $result['error']    = $err->error_no;

            $result['goods_id'] = stripslashes($goods->goods_id);

            if (is_array($goods->spec))

            {

                $result['product_spec'] = implode(',', $goods->spec);

            }

            else

            {

                $result['product_spec'] = $goods->spec;

            }

        }

    }

    $result['confirm_type'] =3;

    die($json->encode($result));

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值