phpcms文章如何筛选分类?

简介phpcms文章筛选分类的方法:首先,用下面这些代码替换掉phpcms/libs/functions/extention.func.php的内容

  

phpcms文章筛选分类的方法:

首先,用下面这些代码替换掉phpcms/libs/functions/extention.func.php的内容

<?php/***extention.func.php用户自定义函数库**@copyright(C)2005-2010PHPCMS*@licensehttp://www.phpcms.cn/license/*@lastmodify2010-10-27*//***通过指定keyid形式显示所有联动菜单*@param$keyid菜单主id*@param$ ageid联动菜单id,0调用顶级*@param$modelid模型id*@param$fieldname字段名称*/functionshow_ age($keyid,$ ageid=0,$modelid='',$fieldname='zone'){$datas=$infos=$array=array();$keyid=intval($keyid);$ ageid=intval($ ageid);//当前菜单id$field_value=intval($_GET[$fieldname]);$urlrule=structure_filters_url($fieldname,$array,1,$modelid);if($keyid==0)returnfalse;$datas=getcache($keyid,' age');$infos=$datas['data'];foreach($infosas$k=>$v){if($v['parentid']==$field_value){$array[$k]['name']=$v['name'];$array[$k]['value']=$k;$array[$k]['url']=str_replace('{'.$fieldname.'}',$k,$urlrule);$array[$k]['menu']=$field_value==$k?'<em>'.$v['name'].'</em>':'<ahref='.$array[$k]['url'].'>'.$v['name'].'</a>';}}return$array;}/***构造筛选URL*/functionstructure_filters_url($fieldname,$array=array(),$type=1,$modelid){if(empty($array)){$array=$_GET;}else{$array=array_merge($_GET,$array);}//TODO$fields=getcache('model_field_'.$modelid,'model');if(is_array($fields)&&!empty($fields)){ksort($fields);foreach($fieldsas$_v=>$_k){if($_k['filtertype']||$_k['rangetype']){if(strpos(URLRULE,'.html')===FALSE)$urlpars.='&'.$_v.'={$'.$_v.'}';else$urlpars.='-{$'.$_v.'}';}}}//后期增加伪静态等其他url规则管理,apache伪静态支持9个参数if(strpos(URLRULE,'.html')===FALSE)$urlrule=APP_PATH.'index.php?m=content&c=index&a=lists&catid={$catid}'.$urlpars.'&page={$page}';else$urlrule=APP_PATH.'list-{$catid}'.$urlpars.'-{$page}.html';//根据get传值构造URLif(is_array($array))foreach($arrayas$_k=>$_v){if($_k=='page')$_v=1;if($type==1)if($_k==$fieldname)continue;$_findme[]='/{$'.$_k.'}/';$_replaceme[]=$_v;}//type模式的时候,构造排除该字段名称的正则if($type==1)$filter='(?!'.$fieldname.'.)';$_findme[]='/{$'.$filter.'([a-z0-9_]+)}/';$_replaceme[]='';$urlrule=preg_replace($_findme,$_replaceme,$urlrule);return$urlrule;}/***生成分类信息中的筛选菜单*@param$field字段名称*@param$modelid模型ID*/functionfilters($field,$modelid,$diyarr=array()){$fields=getcache('model_field_'.$modelid,'model');$options=empty($diyarr)?explode("n",$fields[$field]['options']):$diyarr;$field_value=intval($_GET[$field]);foreach($optionsas$_k){$v=explode("|",$_k);$k=trim($v[1]);$option[$k]['name']=$v[0];$option[$k]['value']=$k;$option[$k]['url']=structure_filters_url($field,array($field=>$k),2,$modelid);$option[$k]['menu']=$field_value==$k?'<em>'.$v[0].'</em>':'<ahref='.$option[$k]['url'].'>'.$v[0].'</a>';}$all['name']='全部';$all['url']=structure_filters_url($field,array($field=>''),2,$modelid);$all['menu']=$field_value==''?'<em>'.$all['name'].'</em>':'<ahref='.$all['url'].'>'.$all['name'].'</a>';array_unshift($option,$all);return$option;}/***获取联动菜单层级*@param$keyid联动菜单分类id*@param$ ageid菜单id*@param$leveltype获取类型parentid获取父级idchild获取时候有子栏目arrchildid获取子栏目数组*/functionget_ age_level($keyid,$ ageid,$leveltype='parentid'){$child_arr=$childs=array();$leveltypes=array('parentid','child','arrchildid','arrchildinfo');$datas=getcache($keyid,' age');$infos=$datas['data'];if(in_array($leveltype,$leveltypes)){if($leveltype=='arrchildinfo'){$child_arr=explode(',',$infos[$ ageid]['arrchildid']);foreach($child_arras$r){$childs[]=$infos[$r];}return$childs;}else{return$infos[$ ageid][$leveltype];}}}//根据 ageid递归到父级functionget_parent_url($modelid,$field,$ ageid=0,$array=array()){$modelid=intval($modelid);if(!$modelid||empty($field))returnfalse;$fields=getcache('model_field_'.$modelid,'model');$keyid=$fields[$field][' ageid'];$datas=getcache($keyid,' age');$infos=$datas['data'];if(empty($ ageid)){$ ageid=intval($_GET[$field]);if(!$ ageid)returnfalse;}$urlrule=structure_filters_url($field,array(),1,$modelid);$urlrule=str_replace('{$'.$field.'}',$infos[$ ageid]['parentid'],$urlrule);array_unshift($array,array('name'=>$infos[$ ageid]['name'],'url'=>$urlrule));if($infos[$ ageid]['parentid']){returnget_parent_url($modelid,$field,$infos[$ ageid]['parentid'],$array);}return$array;}/***构造筛选时候的sql语句*/functionstructure_filters_sql($modelid){$sql=$fieldname=$min=$max='';$fieldvalue=array();$modelid=intval($modelid);$model=getcache('model','commons');$fields=getcache('model_field_'.$modelid,'model');$fields_key=array_keys($fields);//TODO$sql='`status`='99'';foreach($_GETas$k=>$r){if(in_array($k,$fields_key)&&intval($r)!=0&&($fields[$k]['filtertype']||$fields[$k]['rangetype'])){if($fields[$k]['formtype']==' age'){$datas=getcache($fields[$k][' ageid'],' age');$infos=$datas['data'];if($infos[$r]['arrchildid']){$sql.='AND`'.$k.'`in('.$infos[$r]['arrchildid'].')';}}elseif($fields[$k]['rangetype']){if(is_numeric($r)){$sql.="AND`$k`='$r'";}else{$fieldvalue=explode('_',$r);$min=intval($fieldvalue[0]);$max=$fieldvalue[1]?intval($fieldvalue[1]):999999;$sql.="AND`$k`>='$min'AND`$k`<'$max'";}}else{$sql.="AND`$k`='$r'";}}}return$sql;}/***分页,如去掉则分页会有问题*/functionmakeurlrule(){if(strpos(URLRULE,'.html')===FALSE){returnurl_par('page={$'.'page}');}else{$url=preg_replace('/-[0-9]+.html$/','-{$page}.html',get_url());return$url;}}?>

然后,内容——模型管理——选择一个模型添加新字段,如图。

phpcms文章如何筛选分类?

最后,在要调用产品筛选的栏目模板页添加标签 ,如下。

<span>性别:</span>{loopfilters('xingbie',$modelid)$r}{$r[menu]}{/loop}
{php$sql=structure_filters_sql($modelid)}{php$urlrule=makeurlrule()}{pc:contentaction="lists"where="$sql"catid="$catid"num="10"order="idDESC"page="$page"urlrule="$urlrule"}<ulclass="photo-listpicbig">{loop$data$r}<li><divclass="img-wrap"><ahref="{$r[url]}"><imgsrc="{thumb($r[thumb],150,112)}"width="150"height="112"alt="{$r[ ]}"/></a></div><spanstyle="color:{$r[style]}">{str_cut($r[ ],28)}</span></li>{/loop}</ul><divid="pages"class="text-c">{$pages}</div>{/pc}

下载链接:网站源码/小程序源码/网站模板下载

版权声明

   站内部分内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供网络资源分享服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请 联系我们 一经核实,立即删除。并对发布账号进行永久封禁处理。在为用户提供最好的产品同时,保证优秀的服务质量。


本站仅提供信息存储空间,不拥有所有权,不承担相关法律责任。

给TA打赏
共{{data.count}}人
人已打赏
网站技巧

MySQL8.0版本和PHP7不兼容问题?

2024-9-19 19:43:37

网站技巧

css中实现背景透明的三种方式

2024-9-19 19:43:39

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索