|
网上找了个方法,但是提示aid错误,所以给修改了一下。亲测可用。 先上效果图:
// 文件路径: source/module/portal/portal_list.php // 找到原封面判断代码区域(约127-129行),替换为以下内容:
// 配置参数(可自定义) $cover_config = [ 'cover_count' => 100, // 封面总数 'cover_dir' => 'static/cover/', // 封面图存放目录 'default_cover' => 'static/cover/default.webp', // 后备默认图 'enable_random' => false, // 是否启用真随机模式(true=每次刷新随机,false=按aid固定) 'file_format' => 'webp', // 图片格式 'zero_padding' => 3 // 文件名前导零位数(例如3表示001.webp) ];
if (!empty($value['pic'])) { // 原图逻辑不变 $value['pic'] = pic_get($value['pic'], '', $value['thumb'], $value['remote'], 1, 1); } else { // 生成封面索引 if ($cover_config['enable_random']) { $cover_index = mt_rand(0, $cover_config['cover_count'] - 1); // 随机模式 } else { $aid = isset($value['aid']) ? intval($value['aid']) : 0; $cover_index = $aid % $cover_config['cover_count']; // 固定分配模式 }
// 格式化文件名(例如补零为001.webp) $cover_filename = str_pad($cover_index, $cover_config['zero_padding'], '0', STR_PAD_LEFT); $cover_path = $cover_config['cover_dir'] . $cover_filename . '.' . $cover_config['file_format'];
// 检查封面是否存在,否则使用默认图 $value['pic'] = file_exists($cover_path) ? $cover_path : $cover_config['default_cover']; } 关键功能说明 灵活配置 通过 $cover_config 可自定义封面数量、路径、文件名规则等参数。 切换 enable_random 为 true 即可启用真随机模式。 容错机制 自动检查 aid 字段是否存在,并转为整数避免报错。 封面文件不存在时自动回退到 default_cover 默认图。 文件名格式化 通过 zero_padding 参数支持前导零命名(如 001.webp),需与实际文件名匹配。 部署步骤 上传封面图 将封面图按规则命名(如 000.webp 至 099.webp)上传至 static/cover/ 目录。 准备一张默认封面图并上传至 static/cover/default.webp。 修改代码 替换 portal_list.php 中封面判断逻辑为上述代码。 清理缓存 进入Discuz!后台 → 工具 → 更新缓存,确保修改生效。 |