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>修改列表页控制器或使用 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 参数 + 模板逻辑组合实现筛选功能,不复杂但需要手动处理条件拼接。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号