
Phpcms 的筛选功能主要用于内容列表页实现多条件过滤,比如按地区、价格、类型等快速查找内容。虽然 Phpcms 官方版本没有内置完整的可视化筛选模块,但可以通过自定义字段和 URL 参数结合模板逻辑来实现筛选效果。
一、准备筛选字段
在使用筛选前,先确保你的模型中包含可用于筛选的字段:
进入后台“内容模型管理”,选择对应模型(如文章模型)添加自定义字段,例如:area(地区)、price(价格)、type(类型)字段类型可选“下拉框”、“单选按钮”或“文本框”,并设置可用选项
二、在内容发布时填写筛选字段
添加完字段后,发布内容时需填入对应的值,这样才能在前端进行数据提取和比对。
三、前端模板中实现筛选表单
在列表模板(如 list.html)中构建筛选表单,通过 GET 方式传递参数:
立即学习“PHP免费学习笔记(深入)”;
<form method="get" action=""> <select name="area"> <option value="">全部地区</option> <option value="beijing" {if $GET[area]==’beijing’}selected{/if}>北京</option> <option value="shanghai" {if $GET[area]==’shanghai’}selected{/if}>上海</option> </select><p><select name="price"><option value="">全部价格</option><option value="100" {if $GET[price]==’100′}selected{/if}>100元以下</option><option value="500" {if $GET[price]==’500′}selected{/if}>500元以下</option></select><button type="submit">筛选</button></form>
四、在 PHP 中处理筛选条件
修改列表页控制器或使用 list_tag 查询时加入条件判断:
{php $where = "status=99";}{if $GET[‘area’]} $where .= " AND area='{$_GET[‘area’]}’"; {/if}{if $GET[‘price’]} {if $_GET[‘price’] == ‘100’} $where .= " AND price <= 100"; {/if} {if $_GET[‘price’] == ‘500’} $where .= " AND price <= 500"; {/if}{/if}<p>{pc:get sql="SELECT * FROM v9_news WHERE $where ORDER BY updatetime DESC" return="data" page="$page" pagesize="10"}{loop $data $r}<h3>{$r[title]}</h3>{/loop}{/pc:get}
五、支持分页与保留筛选参数
使用 Phpcms 的分页标签时,确保筛选参数能随分页保留:
{pc:content action="lists" catid="$catid" num="10" page="$page" where="$where" order="updatetime DESC"} {loop $data $r} <p>{$r[title]}</p> {/loop} {$pages}{/pc:content}
这样分页变量会自动继承当前 GET 参数。
基本上就这些。关键是利用自定义字段 + URL 参数 + 模板逻辑组合实现筛选功能,不复杂但需要手动处理条件拼接。

评论(0)