推荐阅读:
[AI-人工智能]免翻墙的AI利器:樱桃茶·智域GPT,让你轻松使用ChatGPT和Midjourney - 免费AIGC工具 - 拼车/合租账号 八折优惠码: AIGCJOEDISCOUNT2024
[AI-人工智能]银河录像局: 国内可靠的AI工具与流媒体的合租平台 高效省钱、现号秒发、翻车赔偿、无限续费|95折优惠码: AIGCJOE
[AI-人工智能]免梯免翻墙-ChatGPT拼车站月卡 | 可用GPT4/GPT4o/o1-preview | 会话隔离 | 全网最低价独享体验ChatGPT/Claude会员服务
[AI-人工智能]边界AICHAT - 超级永久终身会员激活 史诗级神器,口碑炸裂!300万人都在用的AI平台
ECSHOP的分类列表页有一个“商品筛选”功能,可以对不同品牌不同价格不同属性的商品进行筛选过滤。但是这个筛选区有一个很蹩脚的地方,那就是品牌项或属性值的排序是杂乱无章的,不能按照站长的意志自定义排序。为了让这个“商品筛选”的排序更人性化,本站开发了这个插件供大家使用。
下面就来具体说一下是用这个插件都能做些什么:
1)、
不仅可以自定义每个属性项中属性值的排序,
还可以自定义品牌列表的顺序,
还有价格范围的自定义排序。
2)、
后台管理超级简单,
只需要在分类编辑页面输入一组属性值即可,
按照你想要的先后顺序输入即可,例如“颜色:白色,黑色,金色,灰色”。
后台按什么顺序输入的,前台就按什么顺序排列,如下图所示:
有了排序功能之后
教程开始:
一、后台文件的修改
1、首先在后台模板文件中找到category_info.htm
找到代码:大概位置:121行——122行
<tr><td class="label"><a href="javascript:showNotice('noticeGrade');" title="{$lang.form_notice}">
在代码:<tr>的上面添加如下的代码:
<tr> <td class="label">属性排序:</td> <td> <textarea name='shuxing_paixu' rows="6" cols="70">{$cat_info.shuxing_paixu}</textarea> </td> </tr>
2、在数据库ecs_category表中加入字段:shuxing_paixu,如下图:
alter table `ecs_goods` ADD `shuxing_paixu` varchar(500) NOT NULL,;
3、在后台category.php中分别对加入和修改的地方if (REQUEST[′act′]==′insert′)和if(_REQUEST['act'] == 'edit') 里面加入
1).找到代码:
$cat['cat_recommend'] = !empty($_POST['cat_recommend']) ? $_POST['cat_recommend'] : array();
在此行代码的后面添加代码:
//ECSHOP分类页筛选属性自定义排序插件新增代码cat['shuxing_paixu'] = trim(cat[′shuxingpaixu′]=trim(_POST['shuxing_paixu']);
2).找到代码:
$cat['cat_recommend'] = !empty($_POST['cat_recommend']) ? $_POST['cat_recommend'] : array();
在此行代码的后面添加代码:
//ECSHOP分类页筛选属性自定义排序插件新增代码cat['shuxing_paixu'] = trim(cat[′shuxingpaixu′]=trim(_POST['shuxing_paixu']);
就是分别对后台增加插入和修改这两个字段的功能,这个简单就不具体细说
4、如下图往数据库加入如下数据:
二、前台文件的修改
1、找到前台category.php
1).找到代码:大概位置:309行
smarty−>assign(′filterattrlist′,all_attr_list);
在这行的代码的上面添加以下的代码。
//ECSHOP分类页筛选属性自定义排序插件新增代码 By:云主机博士 2013年11月24日17:05:17 代码开始 //print_r(all_attr_list);all a ttr l ist);shuxing_paixu = trim(cat['shuxing_paixu']); //echo "cat[ ′ shuxing p aixu ′ ]);//echo"shuxing_paixu"; shuxing_paixuArr = array();shuxing p aixuArr=array();temparr = preg_split ("/\r\n/",shuxing_paixu); //print_r(shuxing p aixu);//print r (temparr); foreach(temparr astemparrask=>ParseError: KaTeX parse error: Expected '}', got 'EOF' at end of input: v){temparrList = explode(":",v);v);arr_a[k]['filter_attr_name'] = trim(k][ ′ filter a ttr n ame ′ ]=trim(temparrList[0]); arr_a[arr a [k]['attr_list'] = explode(",", trim(ParseError: KaTeX parse error: Expected 'EOF', got '}' at position 19: …parrList[1])); }̲ //print_r(arr_a); //print_r(arr_a); //print_r(arr a );//print r (all_attr_list); foreach(all_attr_list asall a ttr l istaskey=>ParseError: KaTeX parse error: Expected '}', got 'EOF' at end of input: val){ foreach(arr_a as k=>k=>v){ if(trim(val['filter_attr_name']) == trim(val[ ′ filter a ttr n ame ′ ])==trim(v['filter_attr_name'])){ temp_b =temp b =all_attr_list[k]['attr_list'];//无序数组k][ ′ attr l ist ′ ];//无序数组temp_c = v['attr_list'];//自定义排序数组 //取消自定义排序数组的左右空白 一便于比较 foreach(v[ ′ attr l ist ′ ];//自定义排序数组//取消自定义排序数组的左右空白一便于比较foreach(temp_c as key2 =>key2=>val2){ temp_c[temp c [key2] = trim(ParseError: KaTeX parse error: Expected 'EOF', got '}' at position 8: val2); }̲ //去掉自定义排序数组中不…temp_d = array(); foreach(temp_b astemp b askey1 => ParseError: KaTeX parse error: Expected '}', got 'EOF' at end of input: val1){temp_d[key1] =key1]=val1['attr_value']; } //print_r(temp_b); //print_r(array_intersect(temp b );//print r (array i ntersect(temp_c,temp_d));temp d ));temp_e = array_intersect(temp_c,temp c ,temp_d);//自定义排序数组交集 去掉了不需要的字段 newattrlist = array();newattrlist=array();i = 1; foreach(temp_e astemp e asval4){ foreach(temp_b astemp b askey3 => ParseError: KaTeX parse error: Expected '}', got 'EOF' at end of input: val3){newattrlist[0] = temp_b[0]; if(temp b [0];if(val4 == trim(ParseError: KaTeX parse error: Expected '}', got 'EOF' at end of input: …attr_value'])){newattrlist[i] =i]=temp_b[key3];key3];i++; } } } unset(all_attr_list[all a ttr l ist[key]['attr_list']); all_attr_list[all a ttr l ist[key]['attr_list'] = newattrlist; //print_r(newattrlist;//print r (all_attr_list); } } } //ECSHOP分类页筛选属性自定义排序插件新增代码
2).找到代码:大概位置:502行——513行之间
/** * 获得分类的信息 * * @param integer cat_id * * @return void */function get_cat_info(catid∗∗@returnvoid∗/functiongetcatinfo(cat_id) { return GLOBALS['db']->getRow('SELECT cat_name, keywords, cat_desc, style, grade, filter_attr, parent_id FROM ' .GLOBALS[′db′]−>getRow(′SELECTcatname,keywords,catdesc,style,grade,filterattr,parentidFROM′.GLOBALS['ecs']->table('category') . " WHERE cat_id = '$cat_id'"); }
在代码parent_id后面添加:,shuxing_paixu ,修改为如下的代码:
/** * 获得分类的信息 * * @param integer cat_id * * @return void */function get_cat_info(catid∗∗@returnvoid∗/functiongetcatinfo(cat_id) { return GLOBALS['db']->getRow('SELECT cat_name, keywords, cat_desc, style, grade, filter_attr, parent_id,shuxing_paixu FROM ' .GLOBALS[′db′]−>getRow(′SELECTcatname,keywords,catdesc,style,grade,filterattr,parentid,shuxingpaixuFROM′.GLOBALS['ecs']->table('category') . " WHERE cat_id = '$cat_id'"); }
三、后台怎么填写的顺序,前台就怎么显示!
经过以上步骤,基本大工搞成!代码虽然写的很乱,但是基本功能是实现了!
写在结尾的话:
在这里十分感谢来自:自学IT网的:sunlonghb 也就是此教程的原创作者的帮助,我是精简了他之前的代码,他之前发布的代码还有品牌的排序,但是我使用了之后连接的地址有问题呢,所以联系到了原作者,在他的帮助下解决了属性筛选的排序问题呢!很热心的一个朋友!
宝塔服务器面板,一键全能部署及管理,送你3188元礼包,点我领取
本文标签属性:
ECshop:ecshop演示站