PbootCMS 后台添加阅读量和点赞量自定义修改功能
一、功能背景与效果说明
PbootCMS 后台默认的内容列表中,阅读量(visits)和点赞量(likes)仅能展示,无法直接修改。本教程通过代码改造,实现以下功能:
二、操作前准备
三、详细操作步骤
步骤 1:修改控制器文件(处理提交数据)
文件路径:apps/admin/controller/content/ContentController.php
// 文章修改
public function mod()
{
if (!! $submit = post('submit')) {
switch ($submit) {2. 在switch ($submit) {下方添加以下代码(处理阅读量和点赞量修改的核心逻辑):
case 'pbootnet': // 修改文章访问量和点赞量
$listall = post('listall'); // 获取选中的文章ID数组
if ($listall) {
// 处理阅读量
$visits = post('visits'); // 获取提交的阅读量数组
foreach ($listall as $key => $value) {
// 验证输入:为空或非数字则保持原数据(原教程此处有误,修正为合理逻辑)
if ($visits[$key] === '' || !is_numeric($visits[$key])) {
// 从数据库获取原数据(避免覆盖为空)
$original = $this->model->getContent($value);
$visits[$key] = $original->visits;
}
// 更新数据库
$this->model->modContent($value, "visits=" . $visits[$key]);
}
// 处理点赞量(逻辑与阅读量一致)
$likes = post('likes'); // 获取提交的点赞量数组
foreach ($listall as $key => $value) {
if ($likes[$key] === '' || !is_numeric($likes[$key])) {
$original = $this->model->getContent($value);
$likes[$key] = $original->likes;
}
$this->model->modContent($value, "likes=" . $likes[$key]);
}
$this->log('修改内容访问量和点赞量成功!'); // 记录操作日志
success('修改成功!', -1); // 提示成功并刷新页面
} else {
alert_back('修改失败,未选择任何内容!'); // 未选择文章时提示
}
break;步骤 2:修改模型文件(添加字段查询)
文件路径:apps/admin/model/content/ContentModel.php
打开文件后,搜索
$field = array((定位查询字段配置),找到类似以下的数组:
$field = array( 'a.id', 'b.name as sortname', 'a.scode', 'c.name as subsortname', 'a.subscode', 'a.title', 'a.subtitle', 'a.date', 'a.sorting', 'a.status', 'a.istop', 'a.isrecommend', 'a.isheadline', 'a.visits', // 此处需要添加点赞量字段 'a.ico', 'a.pics', 'a.filename', 'a.outlink', 'd.urlname', 'b.filename as sortfilename' );
2. 在'a.visits',下方添加'a.likes',,添加后如下:
'a.visits', 'a.likes', // 新增点赞量字段 'a.ico',
作用:让后台列表查询时包含likes(点赞量)字段,否则页面无法显示点赞量数据。
3. 保存文件。
步骤 3:修改视图文件(显示输入框和按钮)
文件路径:apps/admin/view/default/content/content.html(后台内容列表页面模板)
子步骤 3.1:添加 "点赞量" 表头
<th>访问量</th> <th>点赞量</th> <!-- 新增点赞量表头 -->
子步骤 3.2:将显示改为可编辑输入框
<!-- 原代码:<td>{$value->visits}</td> -->
<td class="table-input">
<input type="text" lay-ignore class="layui-input"
name="visits[]" value="{$value->visits}">
</td>2. 在阅读量输入框下方添加点赞量输入框:
<td class="table-input">
<input type="text" lay-ignore class="layui-input"
name="likes[]" value="{$value->likes}">
</td>属性说明:
子步骤 3.3:添加 "保存阅读点赞量" 按钮
<button type="submit" name="submit" value="sorting" class="layui-btn layui-btn-sm">保存排序</button>
2. 在其后方添加新按钮:
<button type="submit" name="submit" value="pbootnet" class="layui-btn layui-btn-sm">保存阅读点赞量</button>
关键:value="pbootnet"需与步骤 1 中case 'pbootnet'完全一致,否则无法触发修改逻辑。
四、文件上传与验证
效果图:





