PbootCMS 增加内容首图与多图按钮功能
一、功能需求背景
在一些网站应用场景中,可能不需要系统默认自动提取文章图片作为缩略图,而是希望能对特定文章单独设置缩略图,并且能将内容图片设置为多图展示形式。基于此需求,我们可以在 PbootCMS 中通过代码修改来实现增加内容首图为缩略图按钮以及内容图片为多图按钮的功能。
二、操作步骤详解
(一)定位模板文件
找到 PbootCMS 项目中的 app\admin\view\default\content\content.html
文件,此文件用于控制后台内容编辑页面的展示布局。
(二)添加按钮代码
在该文件的代码第 340 行至 740 行之间,添加以下 HTML 代码来呈现内容首图设置和内容图片多图设置的按钮:
<div class="layui-form-item"> <label class="layui-form-label">内容首图设置</label> <div class="layui-input-block"> <input type="checkbox" name="contenttopic" value="1" title="内容首图设置缩略图"> <input type="checkbox" name="contenttopics" value="1" title="内容图片设置多图"> </div> </div>
这段代码会在后台内容编辑页面生成两个复选框按钮,分别用于控制是否将内容首图设为缩略图以及是否将内容图片设为多图。
(三)修改控制器文件
$contenttopic = post('contenttopic'); // 设置内容首图按钮 $contenttopics = post('contenttopics'); // 设置内容图片为多图按钮
这两行代码用于接收从后台页面提交的按钮状态数据。
(四)修改文章处理逻辑
在文件的代码第 136 行和 486 行处,添加以下 PHP 代码来根据按钮状态处理文章图片:
// 提取文章第一张图为缩略图 if ($contenttopic && preg_match("/<img.+?src=[\'\"]?([^\'\"]+?(\.gif|\.jpg|\.png|\.jpeg))[\'\"]?.+?>/i", decode_string($content), $srcs) && isset($srcs[1])) { $ico = $srcs[1]; } // 设置内容图片为多图,不适用内容图片多的情况 if ($contenttopics && preg_match_all("/<img.+?src=[\'\"]?([^\'\"]+?(\.gif|\.jpg|\.png|\.jpeg))[\'\"]?.+?>/i", decode_string($content), $srcs)) { $srcstr = implode(',', $srcs[1]); $pics = $srcstr; }
这段代码的作用是,当内容首图设置按钮被选中时,提取文章中的第一张图片作为缩略图;当内容图片多图设置按钮被选中时,提取文章中的所有图片并以逗号分隔的形式存储。
五、注意事项
最终实现效果: