新闻中心
怎么把Ecshop后台商品重量修改为商品规格?
站长朋友们都知道ecshop是一款B2C独立的网店系统,该系统是由php语言加mysql数据库架构开发的一款开源的程序,受到万千电商的喜爱,也很适合中小型电商使用,建议配合无忧主机的PHP空间使用效果最佳。很多PHP程序员也是由它入手开始的PHP研发之路。它有很多功能都是事先已经开发好的,安装上就可以使用了。无忧主机小编近期也在研究它。之前小编发布的商品都是按照商品重量发布的,今天出于好奇小编添加的一件宝贝不是按照重量来发布的,而是按照规格大小发布的。于是小编就登陆到网站后台->商品列表->添加新商品->其他信息。果然看到没有商品规格。只有商品重量如下图:
[caption id="attachment_13889" align="alignnone" width="544"] ecshop后台[/caption]
小编对程序进行了分析,以及结合网上资料,最终找到了修改的方法,并测试有效。不过修改的步骤的确有点复杂。小编也描述的很详细。
第一步分析:
ecshop商品重量修改为商品规格需要修改两个主要地方:
1、修改后台PHP程序(因为后台对商品重量内容有限制,即必须为数字具体设置如下)
2、修改Mysql数据库字段(数据库中商品表中ecs_goods中的goods_weight的字段类型为decimal(10,3) unsigned)
第二步修改:
1’找到主机根目录下的goods.php(建议用editplus编辑器打开)。
2找到:(在158-179行)
将'promote_end_date' => local_date('Y-m-d', local_strtotime('+1 month')),
'goods_weight' => 0,
'give_integral' => -1,
修改为:
'promote_end_date' => local_date('Y-m-d', local_strtotime('+1 month')),
'goods_weight' => ‘‘,
'give_integral' => -1,
3、再找到:(242-246行)'promote_start_date' => local_date('Y-m-d'),
'promote_end_date' => local_date('Y-m-d', gmstr2tome('+1 month')),
'goods_weight' => 0,
'give_integral' => -1,
'rank_integral' => -1
修改为:'promote_start_date' => local_date('Y-m-d'),
'promote_end_date' => local_date('Y-m-d', gmstr2tome('+1 month')),
'goods_weight' => '800*2000',
'give_integral' => -1,
'rank_integral' => -1
4、再找到:(256-260行)/*根据商品重量的单位重新计算 */
if ($goods['goods_weight'] > 0)
{
$goods['goods_weight_by_unit'] = ($goods['goods_weight'] >= 1) ? $goods['goods_weight'] : ($goods['goods_weight'] / 0.001);
}
修改为:/* 根据商品重量的单位重新计算 */
if ($goods['goods_weight'])
{
$goods['goods_weight_by_unit'] = ($goods['goods_weight'] >= '') ? $goods['goods_guige'] : "800*2000";
}
5、再找到:$smarty->assign('unit_list', get_unit_list());
$smarty->assign('user_rank_list', get_user_rank_list());
$smarty->assign('weight_unit', $is_add ? '1' : ($goods['goods_weight'] >= 1 ? '1' : '0.001'));
$smarty->assign('cfg', $_CFG);
$smarty->assign('form_act', $is_add ? 'insert' : ($_REQUEST['act'] == 'edit' ? 'update' : 'insert'));
修改为:$smarty->assign('unit_list', get_unit_list());
$smarty->assign('user_rank_list', get_user_rank_list());
$smarty->assign('weight_unit', $is_add ? '' : ($goods['goods_weight'] >= '' ? '' : '800*2000'));
$smarty->assign('cfg', $_CFG);
$smarty->assign('form_act', $is_add ? 'insert' : ($_REQUEST['act'] == 'edit' ? 'update' : 'insert'));
6、再找到:(798-800页)$promote_end_date = ($is_promote && !empty($_POST['promote_end_date'])) ? local_strtotime($_POST['promote_end_date']) : 0;
$goods_weight = !empty($_POST['goods_weight']) ? $_POST['goods_weight'] * $_POST['weight_unit'] : 0;
$is_best = isset($_POST['is_best']) ? 1 : 0;
修改为:
$promote_end_date = ($is_promote && !empty($_POST['promote_end_date'])) ? local_strtotime($_POST['promote_end_date']) : 0;
$goods_weight = !empty($_POST['goods_weight']) ? $_POST['goods_weight'] : '800*2000';
$is_best = isset($_POST['is_best']) ? 1 : 0;
7、修改数据库中表的字段:
修改表ecs_goods 中的 goods_weight字段。
alter table ecs_goods change goods_weight goods_weight varchar(50) not null;
8、找到后台添加商品的模板页
Admin/templates/goods_info.htm
找到下面代码:
<td><input type="text" name="goods_guige" value="{$goods.goods_guige_by_unit}" size="20"/> <select name="weight_unit">{html_options options=$unit_list selected=$weight_unit}</select></td>
修改为:<td><input type="text" name="goods_guige" value="{$goods.goods_guige_by_unit}" size="20" /></td>
按照以上方法设置后再登陆后台添加商品时也就清楚的看到了商品规格。如下图:
[caption id="attachment_13890" align="alignnone" width="549"]
ecshop后台添加[/caption]
以上步骤有点繁琐,毕竟是修改源程序文件,也可以说是一个小小的功能二次开发了,小编也是研究了一天的时间才搞定的。不过按照小编的步骤一步一步的操作,最后就一定能实现。
相关文章推荐阅读:
ECSHOP后台商品详情无法上传图片
ECSHOP创建管理员帐号失败的解决办法
ECSHOP安装遇到安装数据失败的解决方法
ECSHOP去版权_删除ECSHOP底部版权信息的方法
本文地址:https://www.51php.com/ecshop/13888.html






