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

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 参数 + 模板逻辑组合实现筛选功能,不复杂但需要手动处理条件拼接。











