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