加截中...

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>


这段代码会在后台内容编辑页面生成两个复选框按钮,分别用于控制是否将内容首图设为缩略图以及是否将内容图片设为多图。

(三)修改控制器文件

  1. 打开 app\admin\controller\content\ContentController.php 文件,该文件负责处理后台内容相关的业务逻辑。

  2. 在代码第 86 行和 428 行处,添加以下 PHP 代码来获取并处理上述按钮提交的数据:

$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;
}


这段代码的作用是,当内容首图设置按钮被选中时,提取文章中的第一张图片作为缩略图;当内容图片多图设置按钮被选中时,提取文章中的所有图片并以逗号分隔的形式存储。

五、注意事项

  1. 代码备份:在进行任何代码修改操作之前,务必对相关文件进行备份,防止因修改失误导致网站出现故障,方便在出现问题时进行恢复。

  2. 文件路径确认:确保准确找到并修改指定的文件路径,不同版本的 PbootCMS 可能会存在文件结构上的差异,需根据实际情况进行调整。

  3. 效果验证:修改完成后,在后台添加或编辑文章时,勾选相应的按钮,然后查看前台页面展示效果,确认是否达到预期的功能实现。


最终实现效果:

image.png


在线客服
服务热线

服务热线

13648088499

微信咨询
二维码
返回顶部