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'
完全一致,否则无法触发修改逻辑。
四、文件上传与验证
效果图: