ecshop属性筛选时,同一属性名下,不同属性值的排序问题

关于属性值混乱的问题,看过源码的都知道,ecshop默认是按商品调用属性的时间来提取,所以会造成与写入数据库的属性序列相冲突的问题。先上图,给大家看一下效果:

修改前:



修改后:



下面来说一下修改思路,需要说明的是,目前这种思路,只是用来解决以整数为主体的属性值。

下面是解决的代码,非常简单,就几行而已。

                $temp_arrt_url_arr[$key] = 0;                           //“全部”的信息生成
                $temp_arrt_url = implode('.', $temp_arrt_url_arr);
                $all_attr_list[$key]['attr_list'][0]['attr_value'] = $_LANG['all_attribute'];
				
                $all_attr_list[$key]['attr_list'][0]['url'] = build_uri('category', array('cid'=>$cat_id, 'bid'=>$brand, 'price_min'=>$price_min, 'price_max'=>$price_max, 'filter_attr'=>$temp_arrt_url), $cat['cat_name']);
                $all_attr_list[$key]['attr_list'][0]['selected'] = empty($filter_attr[$key]) ? 1 : 0;
				
				
				/* 以下为修改属性开始,请大家在ecshop的category.php中搜索以上的代码确定位置 */
					/* 属性为枝数,则重新排序,原来的ecshop排序是错乱的 */
				if($all_attr_list[$key]['filter_attr_name']=='枝数')  
				{
				   
				  foreach ($attr_list as $k=>$v) 
				  {
					 $attr_value[$k] = intval($v['attr_value'])>0 ? intval($v['attr_value']): 10000 ;
                  }
                  array_multisort($attr_value, $attr_list);
				}
				
				/* 属性为价格,则重新排序,原来的ecshop排序是错乱的 */
				if($all_attr_list[$key]['filter_attr_name']=='价格')  
				{
				  foreach ($attr_list as $k=>$v) 
				  {
					 $attr_value[$k] = intval($v['attr_value']) ;
                  }
                  array_multisort($attr_value, $attr_list);
				}
				/* 修改属性结束,若有多个属性需要排序,请照上面的方法解决 */
				
		
                foreach ($attr_list as $k => $v)
                {   
                    $temp_key = $k + 1;
                    $temp_arrt_url_arr[$key] = $v['goods_id'];       //为url中代表当前筛选属性的位置变量赋值,并生成以‘.’分隔的筛选属性字符串
                    $temp_arrt_url = implode('.', $temp_arrt_url_arr);

                    $all_attr_list[$key]['attr_list'][$temp_key]['attr_value'] = $v['attr_value']; 
                    $all_attr_list[$key]['attr_list'][$temp_key]['url'] = build_uri('category', array('cid'=>$cat_id, 'bid'=>$brand, 'price_min'=>$price_min, 'price_max'=>$price_max, 'filter_attr'=>$temp_arrt_url), $cat['cat_name']);

                    if (!empty($filter_attr[$key]) AND $filter_attr[$key] == $v['goods_id'])
                    {
                        $all_attr_list[$key]['attr_list'][$temp_key]['selected'] = 1;
                    }
                    else
                    {
                        $all_attr_list[$key]['attr_list'][$temp_key]['selected'] = 0;
                    }
                }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值