本文章所涉及的 前台页面显示 与 截图 是基于SuperFly模版的修改, 而使用不同模版的就按具体情况做相应的修改.
1.本方法修改了数据库, 那首先就添加字段, 当然也可以将此步骤放于最后.
修改数据表goods_attr, 添加一名为 attr_tips 的字段.
alter table ecs_goods_attr add attr_tips text Null;
2.修改admin/includes/lib_goods.php
(1)修改 get_attr_list 函数中的$sql变量, 增加提取的数据项 v.attr_tips
(2)找到 $html .= ($val['attr_type'] == 1 || $val['attr_type'] == 2), 修改 build_attr_html 函数, 大约在714行.
在这句后增加下面代码:
$html .= '<span> 属性提示:<textarea rows="1" cols="50" name="attr_tips_list[]" style="height:17px">' . $val['attr_tips'] . '</textarea></span>';//stephen
3.修改admin/goods.php
(1)修改复制商品时, 同时复制属性值的内容
找到 $sql = "DELETE FROM " . $ecs->table('goods_attr') . " WHERE goods_id = 0"; , 大约在354行, 增加提取的数据项 attr_tips
(2)继续修改, 找到 $attr_price = $_POST['attr_price_list'][$key]; 大约在976行, 后面添加:
$attr_tips = $_POST['attr_tips_list'][$key];
(3)找到$goods_attr_list[$attr_id][$attr_value]['attr_price'] = $attr_price; 后两处, 大约在983行和989行, 后面分别添加:
$goods_attr_list[$attr_id][$attr_value]['attr_tips'] = $attr_tips;
(4)找到 if ($info['sign'] == 'insert') 大约在1020, 在后面增加插入的数据项 attr_tips , 对应的值为 $info[attr_tips] , 修改后效果如下:
$sql = "INSERT INTO " .$ecs->table('goods_attr'). " (attr_id, goods_id, attr_value, attr_price, attr_tips)".
"VALUES ('$attr_id', '$goods_id', '$attr_value', '$info[attr_price]', '$info[attr_tips]')";
(5)找到 elseif ($info['sign'] == 'update') 大约在1025, 在后面增加插入的数据项 attr_tips , 对应的值为 $info[attr_tips] , 修改后效果如下:
$sql = "UPDATE " .$ecs->table('goods_attr'). " SET attr_price = '$info[attr_price]', attr_tips = '$info[attr_tips]' WHERE goods_attr_id = '$info[goods_attr_id]' LIMIT 1";
后台页面添加效果截图:
这里就完成了后台添加,数据插入操作的修改了
4.修改includes/lib_goods.php
(1)修改 get_goods_properties 函数中获得商品的规格的$sql变量, 大约在626行, 增加提取的数据项 g.attr_tips
(2)修改 get_goods_properties 函数中循环保存属性值的数组语句, $arr['spe'][$row['attr_id']]['values'][] , 添加一参数 'tips' => $row['attr_tips'] , 修改后效果如下:
$arr['spe'][$row['attr_id']]['values'][] = array(
'label' => $row['attr_value'],
'price' => $row['attr_price'],
'format_price' => price_format(abs($row['attr_price']), false),
'id' => $row['goods_attr_id'],
'tips' => $row['attr_tips']);
5.修改相应的前台调用页面 themes/vanity/library/goods_detail.lbi , 这里使用不同的模版, 找回自己产品页内容相应调用的文件
(1)找到 {foreach from=$spec.values item=value key=key} 的循环函数, 在label 标签的title 属性上添加 {$value.tips} 调用参数, 修改后效果如下:
<label for="spec_value_{$value.id}" title="{$value.tips}{if $value.tips neq ''}<br/>{/if}{if $value.price gt 0}{$lang.plus}{$value.format_price|abs}{elseif $value.price lt 0}{$lang.minus}{$value.format_price|abs}{/if}">
前台显示效果截图: