|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
修正版官方结合项函数,主要是去掉选项字段名重复在URL地址出现
效果就是 如果字段属性已经被选择
再去选择改字段属性
URL地址连接官方会出现 比如 myarea=东城%myarea=朝阳
本方法 URL去掉官方多余的 属性值 只显示后面的 比如 myarea=朝阳
效果预览图
和官方写的方法不同
官方的是 获得当前选项字段值连接起来,
最后输出时,全部替换增加链接到每个属性链接地址上,
所以如果连续点同一字段的2个属性值的话 ,字段会重复出现在URL里
比如 myarea=东城%myarea=朝阳 和myarea=朝阳 都是 朝阳的列表内容
正常情况下 连续点同一字段值,应该只会是 一个字段 比如就是 myarea=朝阳
get取得后 会覆盖前面东城,对筛选结果是没有影响的
但是感觉 对搜索引擎不友好 多个地址对应一样的内容了。
我就改为 只取得其它字段的被选择属性值 链接当前字段属性值 这样就避免了重复输出一样的字段在URL上。
把上面代码替换掉官方的userfun.php 内 就可以
或者重新命名函数名
在模板调用这个函数名
******************** 插件使用 ********************
1、插件参数配置可修改 /e/class/userfun.php 文件中user_ShowFieldandChange函数的以下配置:(推荐用Dreamweaver或Editplus等编辑工具修改)
---------------------------
//------- 函数参数设置开始 -----
//要显示的结合项字段列表,多个字段用半角逗号“,”隔开
$fieldandvar='myarea,sex,age';
//字段显示选项设置,多项用双“#”号隔开,格式:选项说明|==|内容1,值1##内容2,值2
$fieldandval=array();
$fieldandval['myarea']='<b>地区:</b>|==|不限,##东城,东城区##朝阳,朝阳区##崇文,崇文区##宣武,宣武区##海淀,海淀区##丰台,丰台区';
$fieldandval['sex']='<b>性别:</b>|==|不限,##男,男##女,女##人妖,人妖';
$fieldandval['age']='<b>年龄:</b>|==|不限,##1-10,1__10##11-20,11__20##21-30,21__30##31-40,31__40##41-50,41__50##50岁以上,51__200';
//正常链接样式
$fieldandcss='fieldandcss';
//已选的选项链接样式
$changefieldandcss='changefieldandcss';
//字段与字段的显示间隔符,格式:开始显示字符|结束显示字符
$fieldexp='<table><tr><td>|</td></tr></table>';
//选项与选项的显示间隔符,格式:开始显示字符|结束显示字符
$valexp='| ';
//------- 函数参数设置结束 -----
---------------------------
2、修改模板,在要结合项属性筛选的地方加上如下代码:
<?=user_ShowFieldandChange()?>
3、CSS文件里定义:(定义正常链接样式和已选链接样式)
---------------------------
.fieldandcss{}
.changefieldandcss{background:#4598D2;color:#fff;}
---------------------------
4、更新相应页面。
(其他说明:如果要用多种导航,可以复制一份函数内容,然后改函数名,调用用新的函数名。
结合项使用教程可查看:http://www.phpin.net/ecms/doc/manual/editor/html/fieldand.html)
另外解决官方结合项插件静态页classid为空的问题。
- //显示结合项筛选项-官方结合项插件优化版:
- function user_ShowFieldandChange($ecms=0){
- global $public_r,$navclassid;//************解决官方结合项插件静态页classid为空
- //global $public_r;
- //------- 函数参数设置开始 -----
- //要显示的结合项字段列表,多个字段用半角逗号“,”隔开
- $fieldandvar='myarea,sex,age';
- //字段显示选项设置,多项用双“#”号隔开,格式:选项说明|==|内容1,值1##内容2,值2
- $fieldandval=array();
- $fieldandval['myarea']='<b>地区:</b>|==|不限,##东城,东城区##朝阳,朝阳区##崇文,崇文区##宣武,宣武区##海淀,海淀区##丰台,丰台区';
- $fieldandval['sex']='<b>性别:</b>|==|不限,##男,男##女,女##人妖,人妖';
- $fieldandval['age']='<b>年龄:</b>|==|不限,##1-10,1__10##11-20,11__20##21-30,21__30##31-40,31__40##41-50,41__50##50岁以上,51__200';
- //正常链接样式
- $fieldandcss='fieldandcss';
- //已选的选项链接样式
- $changefieldandcss='changefieldandcss';
- //字段与字段的显示间隔符,格式:开始显示字符|结束显示字符
- $fieldexp='<table><tr><td>|</td></tr></table>';
- //选项与选项的显示间隔符,格式:开始显示字符|结束显示字符
- $valexp='| ';
- //------- 函数参数设置结束 -----
- //附加参数
- $urlcs='';
- $mid=(int)$_GET['mid'];
- if($mid){
- $urlcs.='&mid='.$mid;
- }
- //************解决官方结合项插件静态页classid为空
- if($_GET['classid']){
- $classid=RepPostVar($_GET['classid']);
- $urlcs.='&classid='.$classid;
- }else{
- $urlcs.='&classid='.$navclassid;
- }
- //************
- if($_GET['ttid'])
- {
- $ttid=RepPostVar($_GET['ttid']);
- $urlcs.='&ttid='.$ttid;
- }
- if($_GET['ztid']){
- $ztid=RepPostVar($_GET['ztid']);
- $urlcs.='&ztid='.$ztid;
- }
- if($_GET['endtime']){
- $starttime=RepPostVar($_GET['starttime']);
- $endtime=RepPostVar($_GET['endtime']);
- $urlcs.='&starttime='.$starttime.'&endtime='.$endtime;
- }
- $line=(int)$_GET['line'];
- if($line){
- $urlcs.='&line='.$line;
- }
- $tempid=(int)$_GET['tempid'];
- if($tempid){
- $urlcs.='&tempid='.$tempid;
- }
- if($_GET['orderby']){
- $orderby=RepPostVar($_GET['orderby']);
- $myorder=(int)$_GET['myorder'];
- $urlcs.='&orderby='.$orderby.'&myorder='.$myorder;
- }
- //间隔字符
- $fieldexpr=explode('|',$fieldexp);
- $valexpr=explode('|',$valexp);
- //输出选项
- $fr=explode(',',$fieldandvar);
- $fcount=count($fr);
- $allstr='';
- $urladd='';
- for($i=0;$i<$fcount;$i++){
- $urladd=''; //重新赋值
- $getval2='';
- $field=$fr[$i];
- //选项链接
- for($fi=0;$fi<$fcount;$fi++){ //循环字段 获得get值
- $field2=$fr[$fi];
- $getval='';
- if($_GET[$field2]){
- if($field2<>$fr[$i]) { //不查询本次循环字段 目的是为了后面输出时增加本次循环字段的属性链接 获得本字段筛选基准链接
- $getval=htmlspecialchars($_GET[$field2],ENT_QUOTES);
- $urladd.='&'.$field2.'='.urlencode($getval);
- }
- }
- if($_GET[$field]){//得到字段选项的值 后面CSS用的 说明是被选属性
- $getval2=htmlspecialchars($_GET[$field],ENT_QUOTES);
- }
- }//循环字段over
- //选项说明
- $vsayr=explode('|==|',$fieldandval[$field]);
- //选项内容
- $valallstr='';
- $vr=explode('##',$vsayr[1]);
- $vcount=count($vr);
- for($vi=0;$vi<$vcount;$vi++){
- $vtr=explode(',',$vr[$vi]);
- if($getval2==$vtr[1]){
- $css=$changefieldandcss;
- }else{
- $css=$fieldandcss;
- }
- $valallstr.=$valexpr[0].'<a href="'.$public_r['newsurl'].'e/action/ListInfo.php?'.$urlcs.'&ph=1'.$urladd.'&'.$field.'='.urlencode($vtr[1]).'" class="'.$css.'">'.$vtr[0].'</a>'.$valexpr[1];
- }
- $allstr.=$fieldexpr[0].$vsayr[0].$valallstr.$fieldexpr[1];
- }
- //$allstr=str_replace('<!--url.add-->',$urladd,$allstr);
- echo $allstr;
- }
复制代码
使用方法参考官方结合项说明,以下附件给出了结合项修改后的代码
fieldand.txt
(3.59 KB, 下载次数: 62)
|
|