搜档网
当前位置:搜档网 › ecshop立即购买和加入购物车并存

ecshop立即购买和加入购物车并存

ecshop立即购买和加入购物车并存
ecshop立即购买和加入购物车并存

Ecshop立即购买和加入购物车并存

ECSHOP开发中心(https://www.sodocs.net/doc/bb9141200.html,)

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

1:goods.dwt模板文件

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'] == 'link_buy')上面添加

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));

}

后台商店设置-购物流程

这样点击原来的购买就弹出对话框,点击确定进入购物车点击立即购买就直接进入购物车了

【ECSHOP开发中心】

ecshop留言板增加字段说明

ecshop留言板添加一项必填项-联系人 一、首先要为你的数据库的ecs_comment增加一个字段以存储联系人姓名: 可以直接在后台-->数据库管理--->SQL查询里里直接执行以下sql语句: alter table ecs_comment add contact varchar(60) not null default ''; 此处注意,这条sql语句中的表前缀ecs_要和你网站的前缀一致,不然会报错,如果你不知道你ecshop网站的数据表前缀. 二: 步骤1. 更改文件message_board.dwt {$lang.message_board_qq}