ecshop后台增加产品的时候,往往需要调整产品重量,调整产品重量单位,ecshop产品重量单位的存储,有很多的缺点和漏洞,比如填写"克",小数点不能保留到最后两位.
很多朋友想灵活的调整ecshop后台产品重量单位,如何调整默认的重量单位呢,将克转换为千克?
1:如何调整单位的文字"千克"转换为公斤
很简单,languages/zh_cn/admin/goods.php语言包中,
$_LANG['unit_g'] = '克';
$_LANG['unit_kg'] = '公斤';
$_LANG['unit_wt2'] = '盒';
同样在前端 languages/zh_cn/common.php 也加入以上信息.
这些,就可以随便调整名称。
2:如何调整默认的单位为"克"
先看admin/templates/goods.htm下面,
<select name="weight_unit">
{html_options options=$unit_list selected=$weight_unit}
</select>
这里就是用来控制单位名称的,如果你需要调整他,在 lib_goods.php中,找到函数
function get_unit_list()
{
return array(
'0.001' => $GLOBALS['_LANG']['unit_g'],
'1' => $GLOBALS['_LANG']['unit_kg'],
'2' => $GLOBALS['_LANG']['unit_wt2'],
);
}
把这个方法剪切到 外层公共include/lib_common.php 底部. 供给前台使用
//修改数据库结构
ALTER TABLE `qdm114844622_db`.`ecs_goods` ADD COLUMN `weight_unit` VARCHAR(10) NULL COMMENT '商品单位' AFTER `salesnum`;
修改 goods.php
elseif ($_REQUEST['act'] == 'add' || $_REQUEST['act'] == 'edit' || $_REQUEST['act'] == 'copy')
里面的
//$smarty->assign('weight_unit', $is_add ? '1' : ($goods['goods_weight'] >= 1 ? '1' : '0.001'));
改为
$smarty->assign('weight_unit', $is_add ? '1' : $goods['weight_unit']);
elseif ($_REQUEST['act'] == 'insert' || $_REQUEST['act'] == 'update')
下面的
//修改--
//$goods_weight = !empty($_POST['goods_weight']) ? $_POST['goods_weight'] * $_POST['weight_unit'] : 0;
改为
$goods_weight = !empty($_POST['goods_weight']) ? $_POST['goods_weight'] : 0;
新增
$weight_unit = $_POST['weight_unit'];
修改sql 2条都改:
suppliers_id,weight_unit) 对应 值 '$suppliers_id','$weight_unit')"; [简写]
设置两者换算的比例就可以,在后台goods.php中,修改 $smarty->assign('weight_unit', $is_add ? '1' : $goods['weight_unit']);保存刷新,就是你要的结果.默认选择了"克"
接下来,修改其他页面显示问题.
修改前端 include/lib_goods.php
/* 修正重量显示 */
/*
$row['goods_weight'] = (intval($row['goods_weight']) > 0) ?
$row['goods_weight'] . $GLOBALS['_LANG']['kilogram'] :
($row['goods_weight'] * 1000) . $GLOBALS['_LANG']['gram'];
*/
改为
$danwei = get_unit_list();
$row['goods_weight'] = $row['goods_weight'] . $danwei[$row['weight_unit']];

下一篇:理解MySQL——索引与优化(转载)