您当前的位置:首页 > CMS常见问题 > ecshop常见问题 >

ecshop商品分类页筛选属性增加自定义排序

来源:网站程序网0

ecshop商城购物系统的商品分类列表页有一个“商品属性筛选”功能,可以对不同品牌不同价格不同属性的商品进行筛选过滤。但是这个筛选区有一个很需要完善的地方,那就是商品的筛选属性能够自定义排序。国际惯例,查阅网上资料发现全都是要花钱的,价格600-800元,而CSDN下载该插件需要1积分/C币,待我登录并绑定手机号码之后发现原来是不可以只充值1积分/C币,C币120枚起售!再去万能的淘宝上面搜索该插件也要86元,罢了,自己动手ecshop二次开发

一、数据库结构修改

进入ECSHOP后台-数据库管理-SQL查询,输入下面SQL语句,提交查询。注意,如果你的数据表前缀不是ecs_,请先将下面SQL语句中ecs_修改成你的数据表前缀,再提交查询。

ALTER TABLE `ecs_category` ADD `brand_sort` VARCHAR(600) NOT NULL DEFAULT '';
ALTER TABLE `ecs_category` ADD `attr_value_sort` VARCHAR(600) NOT NULL DEFAULT '';

二、需要修改的文件

  • 根目录/admin/templates/category_info.htm,修改该文件是为了添加输入brand_sort和attr_value_sort字段信息的表单输入控件,难度不高代码请自行添加。
  • 根目录/admin/category.php,修改在提交(insert)或更新(update)操作的时候保存brand_sort和attr_value_sort字段的值,难度不高代码请自行添加。
  • 根目录/category.php,核心排序代码,以下贴出。

ecshop品牌与属性排序

重点的修改在根目录/category.php这个文件里,首先需要修改get_cat_info函数,增加返回brand_sort和attr_value_sort字段的值,这个函数的作用是获得分类的信息:

function get_cat_info($cat_id)
{
  $row=$GLOBALS['db']->getRow('select cat_id,cat_name,keywords,cat_desc,parent_id,setting,style,grade,grade_define,filter_attr,brand_sort,attr_value_sort from '.$GLOBALS['ecs']->table('category').' where cat_id='.$cat_id);
  $row['url']=build_uri('category', array('cid'=>$row['cat_id']), $row['cat_name']);
  return $row;
}

接下来,搜索《$smarty->assign('brands', $brands);》这行代码,并在这行代码下面添加以下代码,排序的原理不难看出,其实就是通过循环筛选属性,按照自定义的顺序重新生成新的筛选属性数组变量。

if($brands and $cat['brand_sort']){
  $brands_attr=array();
  $brands_attr[0]=$brands[0];
  $brands_temp=explode(',', $cat['brand_sort']);
  foreach($brands_temp as $v){
    foreach($brands as $val){
      if($val['brand_name']==$v){
        $brands_attr[]=$val;
        break;
      }
    }
  }
  $brands=$brands_temp;
  $smarty->assign('brands', $brands);
}

最后,搜索《$smarty->assign('filter_attr_list', $all_attr_list);》这行代码,并在这行代码上面添加以下代码,排序的原理同上。

if($cat['attr_value_sort']){
  $attr_value_sort=explode("\r\n",$cat['attr_value_sort']);
  $attr_define_sort=array();
  foreach($attr_value_sort as $val){
    if($val){
      $attr_name_and_values=explode(':',$val);
      $attr_define_sort[$attr_name_and_values[0]]=explode(',',$attr_name_and_values[1]);
    }
  }
  foreach($all_attr_list as $k=>$v){
    foreach($attr_define_sort as $key=>$val){
      if($v['filter_attr_name']==$key){
        $_attr_list=array();
        $_attr_list[0]=$v['attr_list'][0];
        foreach($val as $value){
          foreach($v['attr_list'] as $attr_temp){
            if($attr_temp['attr_value']==$value){
              $_attr_list[]=$attr_temp;
              break;
            }
          }
        }
        $all_attr_list[$k]['attr_list']=$_attr_list;
      }
    }
  }
}

建站咨询

在线咨询真诚为您提供专业解答服务

咨询热线

137 1731 25507×24小时服务热线

微信交流

二维码终于等到你,还好我没放弃
返回顶部