ecshop2.7.3仿淘宝按颜色,尺码没库存则灰色

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



使用效果


素材


1.
■■/theme/模板/goods.dwt■■■■■■■■■■■■■
查找
</script>
在第一个上面添加一行放以下代码
  1. var zt=false,pid='';
  2. function changeAtt(t,id) {
  3. if(t.style.rel=='x'){changeok(t)
  4. }else if(t.style.rel=='D'){
  5. }else{
  6. var attid=(t.id).replace('spec_a','');
  7. for (var i = 0; i<t.parentNode.childNodes.length;i++) {
  8. if (t.parentNode.childNodes[i].className == 'cattsel') {
  9. t.parentNode.childNodes[i].className = 'nokucun';
  10. }
  11. }
  12. t.lastChild.checked=true;
  13. t.className='cattsel';
  14. if(zt){
  15. if(pid!=t.id){
  16. Ajax.call('goods.php?act=get_products_info', 'id=' + attid+ '&goods_id=' + goods_id+'&pid=' + id, shows_number, 'GET', 'JSON');
  17. }
  18. }else{
  19. zt=true;
  20. Ajax.call('goods.php?act=get_products_info', 'id=' + attid+ '&goods_id=' + goods_id+'&pid=' + id, shows_number, 'GET', 'JSON');
  21. }
  22. pid=t.id
  23. }}

  24. function changeok(tt){
  25. for (var i = 0; i<tt.parentNode.childNodes.length;i++) {
  26. if (tt.parentNode.childNodes[i].className == 'cattsel') {
  27. tt.parentNode.childNodes[i].className = '';
  28. tt.parentNode.childNodes[i].style.border=' #c8c9cd 1px solid';
  29. tt.parentNode.childNodes[i].style.color='#000';
  30. }
  31. }
  32. tt.lastChild.checked=true;
  33. tt.className='cattsel';
  34. tt.style.border=' #FF6701 2px solid';
  35. tt.style.color='#000';
  36. changePrice();
  37. }

  38. function shows_number(result){
  39. if(result.err_msg==''){
  40. alert('系统出错!');
  41. }else{
  42. if(result.pid==1){id1=2}else{id1=1}
  43. var obj=document.getElementById("spec"+id1).getElementsByTagName("a");
  44. for (var i = 0; i<obj.length;i++) {
  45. obj[i].className='';
  46. obj[i].style.border=' #c8c9cd 1px solid';
  47. obj[i].style.color='#CCC';
  48. obj[i].style.rel='D';
  49. }
  50. var ss=result['result'];
  51. for(i=0;i<(ss.length);i++){
  52. var obj=document.getElementById("spec_a"+ss[i]['goods_attr']);
  53. obj.className='';
  54. obj.style.border=' #c8c9cd 1px solid';
  55. obj.style.color='#000';
  56. obj.style.rel='x';
  57. }
  58. }
  59. }
复制代码

2.最后一个</script> 上面一行插入代码[这个是商品详细页默认选择一个尺码或者颜色,不需要的不要添加]
  1. var id=2;
  2. var selected=document.getElementById('spec'+id);
  3. if(selected){
  4. //document.getElementById('spec'+id).parentNode.style.display='none';
  5. var obj=selected.getElementsByTagName("a");
  6. changeAtt(obj[0],id);
  7. }
复制代码


3.■■■■■goods.php■■■■■■■■■■■■■■■
查找
//-- PROCESSOR
在上面一行/*------------------------------------------------------ */上面添加一行放以下代码
  1. if (!empty($_REQUEST['act']) && $_REQUEST['act'] == 'get_products_info')
  2. {
  3. include('includes/cls_json.php');
  4. $json = new JSON;
  5. $spce_id = isset($_GET['id'])?intval($_GET['id']):0;
  6. $pid = isset($_GET['pid'])?intval($_GET['pid']):0;
  7. $goods_id = isset($_GET['goods_id'])?intval($_GET['goods_id']):0;
  8. $res = array('err_msg' => '','pid'=>$pid,'id'=>$spce_id, 'result' => '');
  9. if($spce_id==0 or$goods_id==0or $pid==0){die($json->encode($res));}
  10. $sql = "SELECT product_number, goods_attr " .'FROM ' . $GLOBALS['ecs']->table('products').
  11. "WHEREgoods_id = '$goods_id' and product_number>0 " .'ORDER BY goods_attr';
  12. $produckc = $GLOBALS['db']->getAll($sql);
  13. //print_r($produckc);
  14. $new=array();
  15. $j=0;
  16. foreach ($produckc as $key => $val){
  17. $attid=$val['goods_attr'];
  18. $attids=explode('|',$attid);
  19. $haskey=false;
  20. foreach ($attids as $k => $v){
  21. if($v==$spce_id){unset($attids[$k]);$haskey=true;}
  22. }
  23. $attid=implode('|',$attids);
  24. if($haskey){
  25. $new[$j]['product_number']=$val['product_number'];
  26. $new[$j]['goods_attr']=$attid;
  27. $j++;
  28. }
  29. }
  30. $res = array('err_msg'=>$goods_id,'pid'=>$pid,'id'=>$spce_id,'result' =>$new);
  31. die($json->encode($res));

  32. }
复制代码


说明:
需要2.7.3版本,要商品类型新建两个属性一个尺码 一个颜色,并在添加修改商品的时候,选这两个属性,并在货品里添加库存
商品详细页的 尺码和颜色显示的先后顺序,在 后台=>商品类型=>鞋子 调整排序
if(result.pid==1){id1=2}else{id1=1}这个id1是 尺码的编码 id2是颜色的编号

上述JS代码写的比较冗余,可能有考虑不周的地方,还请高手们多指教!
本人博客:http://blog.youyiweb.cn

回答:
不能用呢?

用不了,貌似没写完

经测试不管用,我这有一个插件功能比你的这个强大,有需要的就联系QQ:79501230或者到ec119.taobao.com店里看下。附插件功能如下:
【1】点击不同的颜色尺寸 切换不同的属性货号
【2】点击不同的颜色尺寸 切换不同的属性库存
【3】点击不同的颜色尺寸 切换不同的属性价格
【4】切换不同颜色的一组商品相册功能
【5】程序支持判断如果库存为0就变成灰色。
【6】程序支持多个属性之间的判断(任意个)。