📢 新文章推送 · 每周更新优质内容 · 订阅更新 →
向下滚动
资源分享

Lumin 博客广告位功能实现

AI 智能总结

版本:1.4.0 | 日期:2026-06-02

概述

为 Lumin 博客主题实现了完整的广告管理功能,前后台全栈打通,支持 Google AdSense、百度联盟、必应广告及自定义代码,共 9 个广告位覆盖全站关键位置。

架构设计

1数据层              API 层           渲染层
2───────    ────────    ───────
3data/ads.toml  ←→  Go Handler  ←→  Hugo Partial
4    ↕              GET/PUT /api/ads   9 个位置模板
5Vue 管理页                         render-ad.html
6(border-card Tab)                  (核心渲染引擎)

9 个广告位

优先级ID名称页面范围特色
🥇 P0home_banner_below首页 Banner 下方仅首页居中横幅,≤60px
🥇 P0sidebar_widget侧边栏 Widget全站有侧栏融入 widget 风格
🥇 P0header_belowHeader 下方横幅全站窄幅 + ✕ 关闭按钮
🥈 P1content_before文章内容前文章页≥400 字阈值
🥈 P1content_after文章内容后文章页≥400 字阈值
🥈 P1post_bottom文章底部文章页文章 footer 之后
🥈 P1list_between列表文章间列表页每 N 篇插入
🥈 P1toc_sidebarTOC 侧边栏文章页(有目录)TOC 卡片下方
🥉 P2footer_above页脚上方全站窄幅横幅兜底

三级开关控制

  1. 全局开关 — 关闭后全站不显示任何广告
  2. 广告位开关 — 单独控制某个位置是否启用
  3. 单条广告开关 — 每条广告代码可独立启停

三种展示模式

  • fixed:固定显示(仅显示第一条启用的广告)
  • random:随机显示(每次刷新随机选一条)
  • rotate:轮播展示(自动切换,可设间隔和最大条数)

支持的广告提供商

  • Google AdSense
  • 百度联盟
  • 必应广告 (Microsoft Advertising)
  • 自定义 HTML/JS 代码

快速素材生成

后台广告编辑对话框支持快速生成广告素材:

素材类型功能说明
网络图片输入 URL 直接预览,可附带跳转链接
纯色块颜色选择器 + 自定义文字,自动生成 HTML 代码
本地图片引用 static/images/ 路径,实时预览,自动补全路径
纯代码手动粘贴联盟广告 HTML/JS

所有素材类型均可一键「生成代码」,自动转换为标准广告 HTML。

用户体验设计

  • 窄幅不打扰:全局横幅限高 48px,文章内广告限高 90px
  • 空容器隐藏:广告位无启用广告时完全不渲染 DOM
  • 移动端适配:窄屏自动压缩边距和字体
  • 暗色模式全覆盖:所有广告容器和 CSS 变量适配暗色主题
  • 关闭按钮:Header 全局横幅支持一键关闭

技术栈

层级技术
数据存储TOML (data/ads.toml)
后台 APIGo (Gin) — GET/PUT /api/ads
后台管理Vue 3 + Element Plus (border-card Tab 布局)
前台渲染Hugo Partial 模板 + 全局 site.Data.ads 函数
CSS主题 custom.css 扩展

后台管理页 UI

后台广告管理页采用与站点配置一致的 type="border-card" Tab 布局

  • 顶部:全局开关 + 列表广告间隔选择 + 保存按钮
  • Tab 栏:9 个广告位标签,每个标签带绿色/灰色圆点指示启用状态
  • 右侧内容区:
    • 状态栏:广告位名称 + 启用开关 + P0/P1/P2 优先级徽标
    • 展示配置:展示模式、轮播间隔、字数阈值等
    • 广告列表:卡片式展示每条广告,支持编辑/删除/启用
    • 添加按钮:底部添加广告入口
  • 编辑对话框集成了快速素材生成功能

文件清单

 1data/ads.toml                              # 广告数据
 2admin/backend/internal/handler/ads.go      # Go API handler
 3admin/frontend/src/views/Ads/Index.vue     # Vue 管理页 (border-card Tab)
 4themes/.../layouts/partials/ads/
 5  ├── render-ad.html                       # 核心渲染引擎
 6  ├── home-banner-below.html               # P0-1
 7  ├── sidebar-widget.html                  # P0-2
 8  ├── header-below.html                    # P0-3
 9  ├── content-before.html                  # P1-1
10  ├── content-after.html                   # P1-2
11  ├── post-bottom.html                     # P1-3
12  ├── list-between.html                    # P1-4
13  ├── toc-sidebar.html                     # P1-5
14  └── footer-above.html                    # P2-1
15themes/.../assets/js/modules/ads-rotate.js # 轮播脚本
16hugo.toml                                  # widgets.order 新增 advertisement

使用方法

  1. 启动 admin-server.exe,登录后台
  2. 侧边栏「系统」→「广告管理」
  3. 在顶部 Tab 栏选择广告位
  4. 点击「添加广告代码」,选择素材类型,生成或粘贴代码
  5. 点击「保存全部」

⚠️ 推送 GitHub 前请按约定清理 hugo.toml 中的密码等敏感信息。

版权声明

本文作者 Lumin

本文链接 https://www.zhengquan.xyz/share/blog-ads/

许可协议 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

请作者喝杯咖啡 ☕

  • 微信打赏
    微信支付
  • 支付宝打赏
    支付宝
点击按钮查看打赏二维码
🎁 推荐工具
试试这些实用在线工具,提升工作效率
前往工具集 →

留言评论

期待你的想法

评论加载中