帝国cms结合项列表属性筛选最详细教程
首先把这个代码复制到e/class/userfun.php 里面去:
<?php
//—————————用户自定义标签函数文件
//显示结合项筛选选项
function user_ShowFieldandChange($val,$fieldandvar,$fieldandcss,$changefieldandcss,$fieldexp,$valexp,$val3,$ecms=0){
global $public_r,$navclassid;
$fieldandval=$val;
$fieldandvart=$fieldandvar;
$fieldandvar=str_replace(‘#’,’,’,$fieldandvar);
//附加参数
$urlcs=”;
$mid=(int)$_GET[‘mid’];
if($mid)
{
$urlcs.=’&mid=’.$mid;
}
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);
//上下级
$frt=explode(‘,’,$fieldandvart);
$ftcount=count($frt);
//输出选项
$fr=explode(‘,’,$fieldandvar);
$fcount=count($fr);
$allstr=”;
foreach ($_GET as $key=>$val){ if($val && in_array($key, $fr)){ $url_this=$key.’=’.urlencode($val); $url=str_replace($url_this,”,$_SERVER[REQUEST_URI]); $tj=’已选择条件:’; $yixuan.='<a class="del_jhx" href="’.$url.’">’.$val.’x</a> ‘; } } echo $tj.$yixuan;
$urladd=”;
for($i=0;$i<$fcount;$i++)
{ $nofield="";
$field=$fr[$i];
for($ti=0;$ti<$ftcount;$ti++)
{
$frtval=explode(‘#’,$frt[$ti]);
if($field==$frtval[0]){$nofield="&".$frtval[1]."=";}
}
//选项链接
$getval=”;
if($_GET[$field])
{
$getval=htmlspecialchars($_GET[$field],ENT_QUOTES);
$urladd.=’&’.$field.’=’.urlencode($getval);
}
//选项说明
$vsayr=explode(‘|==|’,$fieldandval[$field]);
//选项内容
$valallstr=”;
$vr=explode(‘|’,$vsayr[1]);
$vcount=count($vr);
for($vi=0;$vi<$vcount;$vi++)
{
$vtr=explode(‘,’,$vr[$vi]);
if($getval==$vtr[1])
{
$css=$changefieldandcss;
}
else
{
$css=$fieldandcss;
}
$valallstr.=$valexpr[0].'<a href="/e/action/ListInfo.php?’.$urlcs.’&ph=1<!–url.add–>&’.$field.’=’.urlencode($vtr[1]).$nofield.’" class="’.$css.’">’.$vtr[0].'</a>’.$valexpr[1];
}
//自定义样式 实现二级自定义样式
if($val3[$field]!="")
{
$fieldexpr2=explode(‘|’,$val3[$field]);
$allstr[$i]=$fieldexpr2[0].$vsayr[0].$valallstr.$fieldexpr2[1];
}
else
{
$allstr[$i]=$fieldexpr[0].$vsayr[0].$valallstr.$fieldexpr[1];
}
//清空没有数据的行
if($vcount==1){$allstr[$i]="";}
}
$allstr=str_replace(‘<!–url.add–>’,$urladd,$allstr);
return $allstr;
}
?>
然后把这个代码放到模板里面:
<?php
$GET=$_GET;
//——- 函数参数设置开始 —–
//要显示的结合项字段列表,多个字段用半角逗号“,”隔开 如果是二级关系用 “#”
$fieldandvar=’quyu,ftitle,jiage’;
//正常链接样式
$fieldandcss=’fieldandcss’;
//已选的选项链接样式
$changefieldandcss=’changefieldandcss’;
//字段与字段的显示间隔符,格式:开始显示字符|结束显示字符
$fieldexp='<table><tr><td>|</td></tr></table>’;
//选项与选项的显示间隔符,格式:开始显示字符|结束显示字符
$valexp=’| ‘;
//字段显示选项设置,多项用“|”号隔开,格式:选项说明|==|内容1,值1|内容2,值2
$val=array();
$val2=array();
$val3=array();
$val[‘quyu’]='<b>区域:</b>|==|老城,老区|新区,新区’;
$val[‘ftitle’]='<b>户型:</b>|==|三室一厅,三室一厅|三室两厅,三室两厅|两室一厅,两室一厅’;
$val[‘jiage’]='<b>价格:</b>|==|50,50|40,40|30,30′;
$val3[‘jiage’]='<div class="gzw">|</div>’;
$val3[‘quyu’]='<div class="gzw">|</div>’;
$val3[‘ftitle’]='<div class="gzw">|</div>’;
$g=user_ShowFieldandChange($val,$fieldandvar,$fieldandcss,$changefieldandcss,$fieldexp,$valexp,$val3);
?>
<?=$g[0]?>
<?=$g[1]?>
<?=$g[2]?>
<?=$g[3]?>
<?=$g[4]?>
这是后台对应的字段,一定要对应你的后台
这个的原理其实就是判断你这个字段里面是不是有这个文字,从而达到赛选的目的
这个是对应的样式,可以通过class进行样式控制
这个是必须要加的,原理的话我也不清楚,反正不加是不显示的
这里是控制筛选的,效果如下