Phpcms通过自定义字段、URL参数和模板逻辑实现筛选功能,首先在模型中添加如area、price等字段,前端构建GET表单传递筛选条件,在列表页通过判断$_GET参数动态拼接SQL查询语句,并结合pc标签实现数据过滤与分页保留参数,从而完成多条件筛选。

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











