实现ecshop批量上传增加自定义字段

ecshop 版本 v2.7.3 RELEASE 20121106 实现不改动数据库批量上传增加自定义字段

1.后台增加自定义字段。在商品类型处增加。

我增加了3个自定义字段:

生产日期;原产地;封装;

2.languages/zh_cn/admin目录下的goods_batch.php文件,增加:

$_LANG[‘upload_goods’][‘goods_riqi’]=’生产日期’;
$_LANG[‘upload_goods’][‘goods_ycd’]=’原产地’;
$_LANG[‘upload_goods’][‘goods_fz’]=’封装’;

3.admin/goods_batch.php文件的修改:

在 elseif ($_REQUEST[‘act’] == ‘insert’)里面的 if (isset($_POST[‘checked’]))

的/* 字段列表 */附近增加:

/*myself 获取商品类型和商品属性*/
$cat_name=$field_arr[‘goods_type’];
$cat_id=$db->getOne(“select cat_id from “.$ecs->table(‘goods_type’).” where cat_name='”.$cat_name.”‘”);
$field_arr[‘goods_type’]=$cat_id;

/*myself自定义属性赋值*/
$attr_riqi_id=$db->getOne(“select attr_id from “.$ecs->table(‘attribute’).” where attr_name=’生产日期'”);
$attr_cd_id=$db->getOne(“select attr_id from “.$ecs->table(‘attribute’).” where attr_name=’原产地'”);
$attr_fz_id=$db->getOne(“select attr_id from “.$ecs->table(‘attribute’).” where attr_name=’封装'”);

然后在循环插入商品的   foreach ($_POST[‘checked’] AS $key => $value)里面的最后面:

//插入属性
$maxf_id = $max_id-1;
$sql=”insert into “.$ecs->table(‘goods_attr’).” values(”,”.$maxf_id.”,”.$attr_riqi_id.”,'”.$field_arr[‘goods_riqi’].”‘,0)”;
$db->query($sql);
$sql=”insert into “.$ecs->table(‘goods_attr’).” values(”,”.$maxf_id.”,”.$attr_cd_id.”,'”.$field_arr[‘goods_ycd’].”‘,0)”;
$db->query($sql);
$sql=”insert into “.$ecs->table(‘goods_attr’).” values(”,”.$maxf_id.”,”.$attr_fz_id.”,'”.$field_arr[‘goods_fz’].”‘,0)”;
$db->query($sql);

经测试这样就大功告成了!。

————————————————————————–

下面是网络上搜索的资料:

版本1

1.加入属性
之所以只能上传特定的属性,应该是批量上传的固定属性都来自于一张表。esc_goods表.
所以我们想假如自己的属性,必须要在esc_goods中加入自己的属性.比如这次加入的字段加
规格: goods_guige
代码:sql语句:alter table ecs_goods add goods_guige varchar(255) not null after goods_desc;
2.页面修改
位置: admin/templates/goods_info.htm按照其形式加入自定义字段
我这里是174行插入的:
<input type="text" name="goods_guige" value="{$goods.goods_guige}" size="20" />
3.添加读取和更新商品表的字段 (和批量上传无关但是便于查看)
位置:admin/goods.php
在更新位置上加入:
$sql=”update ecs_goods set goods_guige='”.$_POST[‘goods_guige’].”‘ where goods_id= “.$_REQUEST[‘goods_id’];

$db->query($sql);

到此商品的属性就可以被更新掉了
4.批量上传添加字段
language/admin/goods_batch.php
添加字段:
//自定义批量上传字段

$_LANG[‘upload_goods’][‘goods_guige’]=’规格’;

OK!至此,只要将商品的cvs导出,即可实现批量上传自定义的属性.

版本2:

这次做了一个不需要修改数据库的版本
1.languages/zh/admin/goods_batch.php
添加整理属性/根据需要批量上传的属性
//自定义批量上传字段start
$_LANG[‘upload_goods’][‘goods_guige’]=’规格’;
$_LANG[‘upload_goods’][‘goods_xilie’]=’系列’;
$_LANG[‘upload_goods’][‘goods_xinghao’]=’型号’;
$_LANG[‘upload_goods’][‘goods_type’]=’商品类型’;

//自定义批量上传字段end

2.添加电器商品类型的属性
后台添加即可
3.批量上传的时候插入到goods_attr
admin/goods_batch.php
395行
/*myself 获取商品类型和商品属性*/
$cat_name=$field_arr[‘goods_type’];
$cat_id=$db->getOne(“select cat_id from “.$ecs->table(‘goods_type’).” where cat_name='”.$cat_name.”‘”);

$field_arr[‘goods_type’]=$cat_id;

477行
/*myself自定义属性赋值*/
$attr_xilie_id=$db->getOne(“select attr_id from “.$ecs->table(‘attribute’).” where attr_name=’系列'”);
$attr_xinghao_id=$db->getOne(“select attr_id from “.$ecs->table(‘attribute’).” where attr_name=’型号'”);
$attr_guige_id=$db->getOne(“select attr_id from “.$ecs->table(‘attribute’).” where attr_name=’规格'”);
//插入属性
$sql=”insert into “.$ecs->table(‘goods_attr’).” values(”,”.$insert_id.”,”.$attr_xilie_id.”,'”.$field_arr[‘goods_xilie’].”‘,0)”;
$db->query($sql);
$sql=”insert into “.$ecs->table(‘goods_attr’).” values(”,”.$insert_id.”,”.$attr_xinghao_id.”,'”.$field_arr[‘goods_xinghao’].”‘,0)”;
$db->query($sql);
$sql=”insert into “.$ecs->table(‘goods_attr’).” values(”,”.$insert_id.”,”.$attr_guige_id.”,'”.$field_arr[‘goods_guige’].”‘,0)”;

$db->query($sql);