ECshop商品分类页筛选属性自定义排序插件及其修改方法[2013年末最新有效版本] -云主机博士

ECshop商品分类页筛选属性自定义排序插件及其修改方法[2013年末最新有效版本] -云主机博士 第1张

ECSHOP的分类列表页有一个“商品筛选”功能,可以对不同品牌不同价格不同属性的商品进行筛选过滤。但是这个筛选区有一个很蹩脚的地方,那就是品牌项或属性值的排序是杂乱无章的,不能按照站长的意志自定义排序。为了让这个“商品筛选”的排序更人性化,本站开发了这个插件供大家使用。

下面就来具体说一下是用这个插件都能做些什么:

1)、
不仅可以自定义每个属性项中属性值的排序,
还可以自定义品牌列表的顺序,
还有价格范围的自定义排序。
2)、
后台管理超级简单,
只需要在分类编辑页面输入一组属性值即可,
按照你想要的先后顺序输入即可,例如“颜色:白色,黑色,金色,灰色”。
后台按什么顺序输入的,前台就按什么顺序排列,如下图所示:

没有此排序功能之前
ECshop商品分类页筛选属性自定义排序插件及其修改方法[2013年末最新有效版本] -云主机博士 第2张

有了排序功能之后
ECshop商品分类页筛选属性自定义排序插件及其修改方法[2013年末最新有效版本] -云主机博士 第3张

教程开始:

一、后台文件的修改

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,如下图:
ECshop商品分类页筛选属性自定义排序插件及其修改方法[2013年末最新有效版本] -云主机博士 第4张

alter table `ecs_goods` ADD `shuxing_paixu` varchar(500) NOT NULL,;

3、在后台category.php中分别对加入和修改的地方if (_REQUEST['act'] == 'insert')和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、如下图往数据库加入如下数据:
ECshop商品分类页筛选属性自定义排序插件及其修改方法[2013年末最新有效版本] -云主机博士 第5张

二、前台文件的修改

1、找到前台category.php

1).找到代码:大概位置:309行
smarty->assign('filter_attr_list',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'");
 }

三、后台怎么填写的顺序,前台就怎么显示!

ECshop商品分类页筛选属性自定义排序插件及其修改方法[2013年末最新有效版本] -云主机博士 第6张

ECshop商品分类页筛选属性自定义排序插件及其修改方法[2013年末最新有效版本] -云主机博士 第7张

经过以上步骤,基本大工搞成!代码虽然写的很乱,但是基本功能是实现了!

写在结尾的话:

在这里十分感谢来自:自学IT网的:sunlonghb 也就是此教程的原创作者的帮助,我是精简了他之前的代码,他之前发布的代码还有品牌的排序,但是我使用了之后连接的地址有问题呢,所以联系到了原作者,在他的帮助下解决了属性筛选的排序问题呢!很热心的一个朋友!

宝塔服务器面板,一键全能部署及管理,送你3188元礼包,点我领取


iproyal.png
原文链接:,转发请注明来源!
「ECshop商品分类页筛选属性自定义排序插件及其修改方法[2013年末最新有效版本] -云主机博士」评论列表

发表评论