您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
帝国cms结合项筛选实例教程--高仿58同城等分类信息筛选(详解)
发布时间:2015-03-03 00:12:55编辑:雪饮阅读()
为了更深切的理解下帝国cms中的结合项,我们来做一个高仿58同城等类似信息分类网站的信息筛选:
首先我们建立数据表,建立之后如下所示:
我们需要对信息的”区域“,”租金“,”厅室“,”方式“这些属性进行筛选,那么我们需要给该表增加如下字段如下:
各字段配置如下:
区域:
租金:
厅室:
方式:
如此以来字段也配置好了。接下来我们需要为这些字段建立一个模型,建立模型如下:
模型也已建立完成,那么我们该下载帝国cms的列表属性信息筛选显示的插件了:
插件地址1:百度云盘下载
插件地址2:帝国官方下载
参照官方使用教程(帝国cms官方插件-列表属性信息筛选显示使用教程),我们将插件修改完成后userfun.php代码如下:
文本代码:
<?php
//---------------------------用户自定义标签函数文件
//显示结合项筛选选项
function user_ShowFieldandChange($ecms=0){
global $public_r;
//------- 函数参数设置开始 -----
//要显示的结合项字段列表,多个字段用半角逗号“,”隔开
$fieldandvar='quyu,zujin,tingshi,fangshi';
//字段显示选项设置,多项用双“#”号隔开,格式:选项说明|==|内容1,值1##内容2,值2
$fieldandval=array();
$fieldandval['quyu']='<b>区域:</b>|==|全鞍山,##铁东,铁东##铁西,铁西##立山,立山##千山,千山##其它,其它';
$fieldandval['zujin']='<b>租金:</b>|==|不限,##500元以下,1__499##500-1000元,500__1000##1000-1500元,1000__1500##1500-2000元,1500__2000##2000-3000元,2000__3000##3000-4500元,3000__4500';
$fieldandval['tingshi']='<b>厅室:</b>|==|不限,##一室,1##两室,2##三室,3##四室,4##四室以上,4__99';
$fieldandval['fangshi']='<b>方式:</b>|==|整套出租,整套出租##单间出租,单间出租##床位,床位';
//正常链接样式
$fieldandcss='fieldandcss';
//已选的选项链接样式
$changefieldandcss='changefieldandcss';
//字段与字段的显示间隔符,格式:开始显示字符|结束显示字符
$fieldexp='<table><tr><td>|</td></tr></table>';
//选项与选项的显示间隔符,格式:开始显示字符|结束显示字符
$valexp=' ';
//------- 函数参数设置结束 -----
//附加参数
$urlcs='';
$mid=(int)$_GET['mid'];
if($mid)
{
$urlcs.='&mid='.$mid;
}
if($_GET['classid'])
{
$classid=RepPostVar($_GET['classid']);
$urlcs.='&classid='.$classid;
}
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++)
{
$field=$fr[$i];
//选项链接
$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="'.$public_r['newsurl'].'e/action/ListInfo.php?'.$urlcs.'&ph=1<!--url.add-->&'.$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;
}
?>
代码文件下载:
插件安装完成之后我们需要一个栏目来发布信息以供测试:
复制默认分类信息所使用的列表模板并修改后的列表模板代码如下:
页面模板内容(*):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>[!--pagetitle--] - Powered by EmpireCMS</title>
<meta name="keywords" content="[!--pagekey--]" />
<meta name="description" content="[!--pagedes--]" />
<link href="[!--news.url--]skin/default/css/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="[!--news.url--]skin/default/js/tabs.js"></script>
</head>
<body class="listpage">
[!--temp.dtheader--]
<table width="100%" border="0" cellspacing="10" cellpadding="0">
<tr valign="top">
<td class="list_content"><table width="100%" border="0" cellspacing="0" cellpadding="0" class="position">
<tr>
<td>您当前的位置:[!--newsnav--]</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="box">
<tr>
<td><table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<?=user_ShowFieldandChange()?>
<td colspan="3" class="info_list">
</td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="list_page">
<tr>
<td>[!--show.page--]</td>
</tr>
</table></td>
</tr>
</table></td>
<td class="sider">
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="title">
<tr>
<td><strong>房屋信息列表</strong></td>
</tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="box">
<tr>
<td>
<ul>
[!--empirenews.listtemp--]
<!--list.var1-->
[!--empirenews.listtemp--]
</ul>
</td>
</tr>
</table>
</td>
</tr>
</table>
[!--temp.footer--]
</body>
</html>
列表内容模板(list.var) (*):
<li>区域:[!--quyu--] 租金:[!--zujin--] 厅室:[!--tingshi--] 方式:[!--fangshi--]</li>
页面模板内容(*)代码文件下载:
列表内容模板(list.var) (*)代码下载:
现在一切ok,我们只需要在刚才新增的栏目中添加信息发布测试即可,实现后效果如下图所示:
至此我们完成了58同城类似信息分类筛选功能的制作,但有个注意项大家必须知道,就是在list.var中的信息调用切不可用灵动标签。
关键字词:帝国cms,结合项,58同城,高久攀个人博客