PbootCMS 列表排序切换实现教程(时间 / 浏览量 / 点赞量 / 随机排序)

在实际网站运营过程中,很多站长都会遇到这样一个需求:
在列表页中,允许用户自由切换文章排序方式,例如按时间、浏览量、点赞量,甚至随机排序,并且分页时还能保持当前排序状态。
家兴网络将分享一种 无需二次开发、不改核心文件 的 PbootCMS 列表排序切换方案,仅通过模板中 PHP 判断即可实现,适合大多数 PbootCMS 模板环境。
一、实现效果说明
本教程可实现以下功能:
✅ 时间排序
✅ 浏览量排序
✅ 点赞量排序
✅ 随机排序
✅ 只显示带缩略图的文章
✅ 只显示无缩略图的文章
✅ 切换排序后分页仍保持当前排序方式
✅ 支持列表页 / 分类页
✅ 无需二开,不修改 PbootCMS 核心文件

二、实现原理简述
核心思路非常简单:
通过 URL 参数(如
?id=date、?id=visits)传递排序条件使用 PHP 的
$_GET@['id']获取当前排序方式在
{pboot:list}标签中 动态输出排序参数利用 CSS 为当前排序项添加
active样式
PbootCMS 模板本身支持在标签中解析 PHP,因此可以直接使用。
三、排序切换 HTML + CSS 代码
将以下代码放入 列表页模板(如 list.html)合适位置:
<style>
.order {
font-size: 18px;
color: #000;
padding: 10px 20px;
background: #fff;
border-bottom: 1px solid #f1f1f1;
}
.order a {
height: 30px;
line-height: 30px;
font-size: 14px;
color: #333;
margin-right: 10px;
padding: 0 15px;
display: inline-block;
text-align: center;
border-radius: 15px;
background: #f1f1f1;
border: 1px solid #e3e3e3;
}
.order a:hover {
background: #e1e1e1;
}
.order a.active {
color: #fff;
background: red;
}
</style>
<h3 class="order">
排序:
<a href="?id=date" <?php $id=$_GET@['id']; if($id==="date"){echo 'class=active';}?>>时间</a>
<a href="?id=visits" <?php $id=$_GET@['id']; if($id==="visits"){echo 'class=active';}?>>浏览量</a>
<a href="?id=likes" <?php $id=$_GET@['id']; if($id==="likes"){echo 'class=active';}?>>点赞量</a>
<a href="?id=random" <?php $id=$_GET@['id']; if($id==="random"){echo 'class=active';}?>>随机</a>
<a href="?id=ico" <?php $id=$_GET@['id']; if($id==="ico"){echo 'class=active';}?>>带图</a>
<a href="?id=noico" <?php $id=$_GET@['id']; if($id==="noico"){echo 'class=active';}?>>无图</a>
</h3>四、PbootCMS 列表循环代码(核心部分)
下面是最关键的部分,根据 URL 参数动态改变列表排序规则。
{pboot:list scode={sort:scode} num=10 page=1
<?php
$id = $_GET@['id'];
if($id === "date") {
echo 'order=date';
} elseif($id === "visits") {
echo 'order=visits';
} elseif($id === "likes") {
echo 'order=likes';
} elseif($id === "random") {
echo 'order=random';
} elseif($id === "ico") {
echo 'isico=1';
} elseif($id === "noico") {
echo 'isico=0';
}
?>}
<li>
<a href="[list:link]" title="[list:title]">[list:title]</a>
</li>
{/pboot:list}参数说明
| 参数 | 说明 |
|---|---|
order=date | 按发布时间排序 |
order=visits | 按浏览量排序 |
order=likes | 按点赞量排序 |
order=random | 随机排序 |
isico=1 | 仅显示有缩略图文章 |
isico=0 | 仅显示无缩略图文章 |
page=1 | 启用分页并保持排序 |
五、为什么分页后排序不会丢失?
因为分页链接会自动继承当前 URL 参数,例如:
/list/12/?id=visits&page=2
只要 ?id=xxx 仍然存在,PHP 判断逻辑就会继续生效,从而保证排序一致。
六、常见注意事项
PHP 必须开启
宝塔环境下需确认 PHP 未被禁用$_GET模板文件需支持 PHP
PbootCMS 默认支持,无需额外配置SEO 友好建议
可通过rel="nofollow"控制是否让搜索引擎抓取排序链接
七、总结
通过家兴网络分享的方法,你可以在 不二开、不改核心文件 的前提下,快速为 PbootCMS 列表页实现:
多维度排序切换
缩略图筛选
分页排序保持
非常适合 资讯站、博客站、企业新闻站 等使用。
如果你正在使用 PbootCMS,这个方案几乎是 性价比最高、最稳定 的列表排序实现方式。