ecshop中颜色属性用图片替换颜色的解决方案
我的凯芭比童装商城用的ecshop系统,想把属性里面的颜色改成图片显示,就像淘宝那样子,我们先来看看效果图。
点击颜色图片的时候还能将图片显示到轮播图中,再来看看后台效果:
我们来看看代码怎么实现的吧。
总共改三个文件 admin/goods.php ,admin/inculdes/lib_goods.php, themes/default/goods.dwt
1,修改admin/goods.php
打开 admin/goods.php 找到
1 | $attr_price = $_POST['attr_price_list'][$key]; |
在下行添加
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] ); |
找到
1 | $goods_attr_list[$attr_id][$attr_value]['attr_price'] = $attr_price; |
有两处,分别另起一行添加
1 | $goods_attr_list[$attr_id][$attr_value]['attr_images'] = $attr_images; |
3. 找到
1 | $sql = "DELETE FROM " .$ecs->table('goods_attr'). " WHERE goods_attr_id = '$info[goods_attr_id]' LIMIT 1"; |
在下面 $db->query($sql);下添加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $goods_attr_id = $info['sign'] == 'insert' ? $db->insert_id() : $info['goods_attr_id']; if( $info['sign'] == 'insert' || $info['sign'] == 'update' ) { if( $info['attr_images']['tmp_name'] != '' ) { $attr_images_dir = 'color/'.$goods_id; $attr_images_scoure_name = "0-0-$goods_attr_id.jpg"; $color_scoure_images = $image->upload_image($info['attr_images'] , $attr_images_dir , $attr_images_scoure_name ); // 原始图片 } } else { $attr_color_images_dir = ROOT_PATH.DATA_DIR.'/color/'.$goods_id."/0-0-".$info[goods_attr_id].".jpg"; file_exists($attr_color_images_dir) && unlink( $attr_color_images_dir ); } |
2,修改admin/inculdes/lib_goods.php
找到 get_attr_list 方法 在SQL里 添加 v.goods_attr_id
找到
1 | <input type="hidden" name="attr_price_list[]" value="0" /> |
在下面添加
1 2 3 4 5 6 7 | $attr_color_images_html = ''; if( $val['goods_attr_id'] && $val['goods_attr_id'] != 0 && $val['goods_attr_id'] != '' ) { $attr_color_images_dir = "../".DATA_DIR.'/color/'.$goods_id."/0-0-".$val['goods_attr_id'].".jpg"; 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>'; } $html .= $val['attr_name'] == '颜色' ? ' 属性图片:<input type="file" name="attr_images_list[]" style=" width:70px;" />'.$attr_color_images_html : '<span style="display:none;"><input type="file" name="attr_images_list[]" value="" /></span>'; |
3,修改themes/default/goods.dwt
找到属性地方
1 | <!-- {foreach from=$spec.values item=value key=key} --> |
在下面添加
1 2 3 4 5 6 7 8 9 | <!-- {* 开始添加图片属性 *} --> <!-- {if $value.image} --> <a {if $key eq 0}class="cattsel"{/if} onclick="changeAtt(this)" href="{$value.image}" rel="zoom1" rev="{$value.image}" name="{$value.id}" title="{$value.label}"> <img src="{$value.image}" style="width:60px; height:60px;margin: -10px;"/> <!-- {else} --> </a><a {if $key eq 0}class="cattsel"{/if} onclick="changeAtt(this)" href="javascript:;" name="{$value.id}" title="{$value.label}"> {$value.label} <!-- {/if} --> <!-- {* 结束添加图片属性 *} --></a> |
2018年清明节更新总结。 Ecshop解决jQuery和toJSONString()的冲突的办法