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

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

在实际网站运营过程中,很多站长都会遇到这样一个需求:

在列表页中,允许用户自由切换文章排序方式,例如按时间、浏览量、点赞量,甚至随机排序,并且分页时还能保持当前排序状态。

家兴网络将分享一种 无需二次开发、不改核心文件 的 PbootCMS 列表排序切换方案,仅通过模板中 PHP 判断即可实现,适合大多数 PbootCMS 模板环境。


一、实现效果说明

本教程可实现以下功能:

  • ✅ 时间排序

  • ✅ 浏览量排序

  • ✅ 点赞量排序

  • ✅ 随机排序

  • ✅ 只显示带缩略图的文章

  • ✅ 只显示无缩略图的文章

  • ✅ 切换排序后分页仍保持当前排序方式

  • ✅ 支持列表页 / 分类页

  • ✅ 无需二开,不修改 PbootCMS 核心文件

1-211126101331536.jpg


二、实现原理简述

核心思路非常简单:

  1. 通过 URL 参数(如 ?id=date?id=visits)传递排序条件

  2. 使用 PHP 的 $_GET@['id'] 获取当前排序方式

  3. {pboot:list} 标签中 动态输出排序参数

  4. 利用 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 判断逻辑就会继续生效,从而保证排序一致。


六、常见注意事项

  1. PHP 必须开启
    宝塔环境下需确认 PHP 未被禁用 $_GET

  2. 模板文件需支持 PHP
    PbootCMS 默认支持,无需额外配置

  3. SEO 友好建议
    可通过 rel="nofollow" 控制是否让搜索引擎抓取排序链接


七、总结

通过家兴网络分享的方法,你可以在 不二开、不改核心文件 的前提下,快速为 PbootCMS 列表页实现:

  • 多维度排序切换

  • 缩略图筛选

  • 分页排序保持

非常适合 资讯站、博客站、企业新闻站 等使用。

如果你正在使用 PbootCMS,这个方案几乎是 性价比最高、最稳定 的列表排序实现方式。

作者王家兴头像

王家兴

资深网络营销顾问,8年数字营销经验,曾为多家知名企业提供网站建设、搜索引擎优化、短视频营销、GEO AI营销服务,擅长内容策略规划。