共享在商品详细页,用图片替换颜色

2016-07-07 14:55 来源:www.chinab4c.com 作者:ecshop专家



前几天,碰到了这个问题,开始在整个坛子里找,都没有满意的答案。
所以决定自己制作,出于程序的改动,给后续官方升级带来的不便,没有修改数据库.
谢谢.http://bbs.ecshop.com/thread-102998-1-1.html 给的思路。

1.在 includes/lib_common.php 文件中 增加一个 get_attachment_by_id 函数.
  1. function get_attachment_by_id( $id )
  2. {
  3. if( $id == '' || $id == 0 )
  4. {
  5. exit("Function :get_attachment_by_id parame $id Is Not Legaled");
  6. }
  7. $number = 6;
  8. $size = 2;

  9. $string = sprintf("%06d", $id);
  10. $path = array();

  11. for( $i = 0 ;$i < $number/$size ; $i ++)
  12. {
  13. $path[] = substr($string, $i*$size, $size);
  14. }

  15. return implode('/', $path);
  16. }
复制代码
2. 修改admin/includes/lib_goods.php .
(1)找到 $html .= ($val['attr_type'] == 1 || $val['attr_type'] == 2) ,修改函数build_attr_html,大约在714行.
在这句后增加下面代码:
  1. $attr_color_images_html = '';
  2. if( $val['goods_attr_id'] && $val['goods_attr_id'] != 0 && $val['goods_attr_id'] != '' )
  3. {
  4. $attr_color_images_dir = "../".DATA_DIR.'/color/'.get_attachment_by_id($goods_id)."/0-0-".$val['goods_attr_id'].".jpg";
  5. file_exists($attr_color_images_dir) && $attr_color_images_html = '<span style="border:1px solid #FF6600;"><img src="'.$attr_color_images_dir.'" width="15" height="15" align="absmiddle"></span>';
  6. }
  7. $html .= $val['attr_name'] == '颜色' ? '<span>属性图片:<input type="file" name="attr_images_list[]" value="' . $val['attr_images_list'] . '" /></span> '.$attr_color_images_html : '<span style="display:none;"><input type="file" name="attr_images_list[]" value="" /></span>';
复制代码
(2)修改函数get_attr_list中的$sql变量,增加提取的数据项 v.goods_attr_id

3.修改admin/includes/goods.php,
(1)找到 $attr_price = $_POST['attr_price_list'][$key]; 大约在976行,后面添加:
  1. $attr_images = array('name' => $_FILES['attr_images_list']['name'][$key] , 'type' => $_FILES['attr_images_list']['type'][$key] , 'tmp_name' => $_FILES['attr_images_list']['tmp_name'][$key] , 'error' => $_FILES['attr_images_list']['error'][$key], 'size' => $_FILES['attr_images_list']['size'][$key] );
复制代码
(2)找到$goods_attr_list[$attr_id][$attr_value]['attr_price'] = $attr_price;后两处,大约在983行和989行,后面分别添加:
  1. $goods_attr_list[$attr_id][$attr_value]['attr_images'] = $attr_images;
复制代码
(3)找到$db->query($sql);大约在1026,这个有多处(请注意行数),在后面增加:
  1. $goods_attr_id = $info['sign'] == 'insert' ? $db->insert_id() : $info['goods_attr_id'];
  2. if( $info['sign'] == 'insert' || $info['sign'] == 'update' )
  3. {
  4. if( $info['attr_images']['tmp_name'] != '' )
  5. {
  6. $attr_images_dir = 'color/'.get_attachment_by_id($goods_id);
  7. $attr_images_scoure_name = "0-0-$goods_attr_id.jpg";
  8. $color_scoure_images = $image->upload_image($info['attr_images'] , $attr_images_dir , $attr_images_scoure_name ); // 原始图片
  9. }
  10. }
  11. else
  12. {
  13. $attr_color_images_dir = ROOT_PATH.DATA_DIR.'/color/'.get_attachment_by_id($goods_id)."/0-0-".$info[goods_attr_id].".jpg";
  14. file_exists($attr_color_images_dir) && unlink( $attr_color_images_dir );
  15. }
复制代码
后台效果图:


前台效果图:


效果展示:
http://www.aigo580.com


唠叨两句:这个功能我觉得官方应该开发,在商品页非常直观,用文字说明颜色,说不清楚,最好是关联一下相册。把颜色图片的地址写入ecs_goods_attr 表。
前台效果,我现在还没有做。根据函数get_attachment_by_id ,已经商品id和goods_attr_id 就能取出相对应的颜色图片.
前台完善,我在发效果图..

效果无法关联相册。这是一遗憾。高手请指教一下。谢谢啦。。

回答:



有问题跟帖说明..

留贴记录

谢谢分享,顶!

等楼主效果图,,支持共享精神

支持共享,,

很实用的功能,感谢共享,期待图例,

不错的。。。。

没有看明白,继续学习中。。。。

谢谢分享,改好多地方啊。

关注一下

效果已出,并关联上库存........

支持一下!