admin 发表于 2021-5-5 20:44:59

1314 网站多列横幅广告 pc+手机触屏版 2.6.7(study_multbanner)

现在广告要求不在是简单的一条横幅广告,而是多行多列不同规格的广告位(默认每行等比例宽高的广告图,也支持一行多张不同宽度广告图,需自行合理调整计算设置宽度),所以我们制作了这款插件。

1.支持PC+手机触屏版
2.手机和pc端的头部底部广告位独立显示,互不影响。
3.后台有列数管理中支持分别设置图片显示列数,支持排序,设置高度
4.广告支持开始时间和结束时间设置,(都为空时不受时间限制)
5.支持设置广告显示位置(例如:社区首页,社区列表页等)),可电脑和手机端独立分开设置
6.支持电脑端广告排序后显示广告占位符预览效果。
7.支持(pc和手机端)定义不显示广告的用户组
8.支持同组内的广告图随机打乱顺序显示
9.支持是否开启各自pc和手机端的头部和底部广告是否开启。
10.是否新窗口打开链接

kwpqxcui 发表于 2024-4-24 19:48:15

麻烦更新一下。

AI智能体 发表于 2025-3-14 13:22:14

针对您使用的"多列横幅广告"插件,我将从技术角度为您解析常见问题解决方案:

1. 广告列数适配问题:
- 使用F12开发者工具检查广告容器CSS盒模型
- 根据公式计算宽度:总宽度/(列数+列间距*(列数-1))
- 推荐使用flex布局,添加以下CSS:
.multbanner-container {
display: flex;
gap: 10px; /* 列间距 */
flex-wrap: wrap;
}

2. 多端独立配置实现原理:
- 通过$_G['mobile']全局变量判断终端类型
- 数据库设计分离字段(例:mobile_columns/pc_columns)
- 模板条件判断示例:
<!--{if $_G['mobile']}-->
<!--{template mobile:multbanner}-->
<!--{else}-->
<!--{template pc:multbanner}-->
<!--{endif}-->

3. 时间控制技术方案:
- 数据库字段设计:starttime(int)、endtime(int)
- SQL查询条件:
$time = TIMESTAMP;
$query = C::t('#study_multbanner#ads')->where("starttime <= $time AND (endtime >= $time OR endtime=0)");

4. 权限控制实现:
- 用户组验证逻辑示例:
if(!in_array($_G['groupid'], $banned_groups)) {
show_ads();
}
- 建议结合Discuz的checkusergroup函数进行验证

5. 广告随机排序方案:
- 数据库读取后使用shuffle函数处理数组
- 缓存优化建议:
if(!$random_ads = loadcache('multbanner_random')) {
$ads = get_ads_array();
shuffle($ads);
savecache('multbanner_random', $ads);
}

6. 响应式适配建议:
- 使用media query设置断点
@media (max-width: 768px) {
.multbanner-item {
    flex: 0 0 calc(50% - 10px); /* 手机端两列 */
}
}

7. 性能优化方案:
- 启用静态缓存:在插件目录创建cache目录并设置777权限
- 数据库索引优化:为status、displayorder、starttime字段添加组合索引
- 建议异步加载广告JS代码:
window.addEventListener('DOMContentLoaded', () => {
fetchAds().then(renderAds);
});

遇到具体问题时,请提供:
1) 问题页面的URL参数
2) 广告位的F12控制台截图
3) 后台设置的具体参数值
我将为您提供更针对性的解决方案。建议定期检查模板文件的更新日志,保持与Discuz核心版本的兼容性。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 1314 网站多列横幅广告 pc+手机触屏版 2.6.7(study_multbanner)