[{"data":1,"prerenderedAt":243},["ShallowReactive",2],{"content:\u002Fposts\u002Fcustomization-log":3,"surround:\u002Fposts\u002Fcustomization-log":233},{"id":4,"title":5,"body":6,"categories":208,"date":210,"description":211,"draft":212,"extension":213,"image":214,"meta":215,"navigation":217,"path":218,"permalink":219,"pinned":212,"published":219,"readingTime":220,"recommend":219,"references":219,"seo":225,"sitemap":226,"stem":227,"tags":228,"type":231,"updated":210,"__hash__":232},"content\u002Fposts\u002Fposts\u002Fcustomization-log.md","Firefly 博客魔改记",{"type":7,"value":8,"toc":191},"minimark",[9,19,22,25,30,33,36,43,46,49,57,62,66,68,71,76,79,81,84,89,92,94,97,103,107,110,113,118,121,123,126,131,134,137,140,145,148,150,153,158,161,163,166,171,174,176,179,184,188],[10,11,15],"alert",{"title":12,"type":13,"icon":14},"AI 迁移提示","info","tabler:robot",[16,17,18],"p",{},"本文由 AI 协助从旧站迁移，尚未完成逐篇人工审校；内容如有疏漏，将在复核后修订。",[10,20],{"title":21,"type":13},"> 本文部分内容由 AI 辅助整理，已结合实际操作进行校验，请根据自身环境谨慎使用。",[16,23,24],{},"本文记录了基于 Firefly 主题的二次开发过程。",[26,27,29],"h2",{"id":28},"全站-umami-统计与浏览量展示","全站 Umami 统计与浏览量展示",[16,31,32],{},"2026-07-03",[16,34,35],{},"集成 Umami 开源统计工具采集全站访问数据并通过 Share API 在前端展示浏览量。核心巧妙之处在于利用 Umami 的分享功能获取 shareId，无需暴露管理员凭证即可安全查询统计数据。前端配合 LocalStorage 分层缓存策略（Token 缓存 24 小时、Metrics 缓存 5 分钟），既保证了数据实时性又避免了对 Umami 服务造成压力。支持文章详情页、动态页、友链页等多页面浏览量展示。",[16,37,38,39],{},"文章：",[40,41,29],"a",{"href":42},"\u002Fposts\u002Fumami-views",[26,44,45],{"id":45},"时段问候小部件",[16,47,48],{},"2026-07-04",[16,50,51,52,56],{},"侧边栏实时时钟组件，动态显示当前时间、日期和星期信息。根据深夜、早晨、上午、中午、下午、晚上六个时段自动切换问候语和对应的 Material Symbols 图标，搭配随机风景背景图增加视觉层次感。采用 IIFE 包裹脚本逻辑避免变量污染全局作用域，通过全局变量判断确保 Swup SPA 页面切换时不会重复声明导致错误，同时支持 ",[53,54,55],"code",{"code":55},"astro:page-load"," 事件触发更新。",[16,58,38,59],{},[40,60,45],{"href":61},"\u002Fposts\u002Ftime-greeting",[26,63,65],{"id":64},"github-贡献热力图小部件","GitHub 贡献热力图小部件",[16,67,48],{},[16,69,70],{},"侧边栏展示近 100 天的 GitHub 贡献热力图，通过 jogruber 公开 API 拉取数据，无需配置 Token 即可使用。服务端构建时发起请求并设置 8 秒超时兜底，请求失败则返回空数据并在前端显示降级提示文案。按 7 天一列排列网格，每格根据贡献等级设置透明度，颜色自动跟随主题色 var(--primary) 适配。鼠标悬停时显示具体日期和提交数的 tooltip。",[16,72,38,73],{},[40,74,65],{"href":75},"\u002Fposts\u002Fgithub-heatmap",[26,77,78],{"id":78},"欢迎弹窗组件",[16,80,48],{},[16,82,83],{},"首次访问时右下角弹出轻巧的欢迎提示 Toast，调用 IP 定位 API 获取访客所在地并显示个性化问候语（如\"你好，来自 XX 的朋友\"）。5 秒后自动关闭退出，使用 sessionStorage 记录访问状态确保同一会话内不再重复弹出，既不打扰回访用户又让首次访客感受到博客的温度。API 请求失败时显示默认文案，具备完整的降级处理能力。",[16,85,38,86],{},[40,87,78],{"href":88},"\u002Fposts\u002Fwelcome-toast",[26,90,91],{"id":91},"短链接与重定向系统",[16,93,48],{},[16,95,96],{},"基于 Astro 内置 redirects 配置项的轻量短链接系统，无需安装任何额外 Node 包即可实现。支持两类目标：内部路径跳转（如 \u002Fq 短链接指向 \u002Fposts\u002Fqq-group\u002F\u002F 文章页）和外部 URL 跳转（如 \u002Favatar-qlogo 指向 QQ 头像 API）。构建时 Astro 自动生成静态重定向页面，生产环境使用 301 状态码，访客访问短链接即自动跳转，零运行时性能损耗。",[16,98,38,99],{},[40,100,102],{"href":101},"\u002Fposts\u002Fshortlink","为博客添加短链接与重定向系统",[26,104,106],{"id":105},"动态页集成-memos-api","动态页集成 Memos API",[16,108,109],{},"2026-07-19",[16,111,112],{},"将自建的 Memos 轻量笔记服务作为博客动态数据源，替代传统的本地 content\u002Fdynamic\u002F 集合维护方式。通过 Astro 文件路由创建 API 代理层（src\u002Fpages\u002Fapi\u002Fdynamic.json.ts），服务端请求 Memos 数据并渲染 Markdown 为 HTML。支持标签过滤（只显示包含特定标签的 memo）和可见性控制（仅公开\u002F全部），Memos 不可用时自动降级返回空数组，保证页面正常渲染。",[16,114,38,115],{},[40,116,106],{"href":117},"\u002Fposts\u002Fmemos-dynamic",[26,119,120],{"id":120},"自定义页脚",[16,122,109],{},[16,124,125],{},"通过 FooterConfig.html 纯内联 HTML 模板定制博客页脚，无需修改组件代码即可生效。页脚包含五大区域：顶部装饰插画、技术徽章（Astro、TailwindCSS、Twikoo、EdgeOne、Umami、CC 协议）、社交链接（博客、网盘、随笔、文档）、工信部 ICP 备案与公安备案号、以及自动计算的建站运行时长。颜色使用 CSS 变量 var(--primary) 跟随主题自动适配深浅模式。",[16,127,38,128],{},[40,129,120],{"href":130},"\u002Fposts\u002Ffooter-config",[26,132,133],{"id":133},"复制成功提示浮层",[16,135,136],{},"2026-07-21",[16,138,139],{},"监听全局 copy 事件，当访客复制博客内容时顶部自动滑入提示浮层，显示\"复制成功，转载请标注本文地址\"。进度条从左到右做 3 秒扫描动画模拟倒计时消失效果，CSS 采用 z-index 三层结构（背景层、进度条层、文字层）隔离渲染互不干扰。新增移动端响应式适配和深色模式专用渐变背景，代码中增加定时器置空操作确保内存安全。",[16,141,38,142],{},[40,143,133],{"href":144},"\u002Fposts\u002Fcopy-toast",[26,146,147],{"id":147},"自定义鼠标指针样式",[16,149,136],{},[16,151,152],{},"使用 .cur 静态光标文件替换浏览器默认鼠标样式，通过 CSS 变量统一管理默认态和可点击态两种光标。纯 CSS 实现零 JavaScript 开销，选择器全面覆盖所有按钮类元素：原生 button、input 按钮类型、ARIA 角色选择器乃至属性选择器，确保跨浏览器行为一致。鼠标文件放在 public\u002Fmouse\u002F 目录下，按需替换即可完成个性化定制。",[16,154,38,155],{},[40,156,147],{"href":157},"\u002Fposts\u002Fcustom-cursor",[26,159,160],{"id":160},"今日一言小部件",[16,162,136],{},[16,164,165],{},"侧边栏每日一句名言展示，通过日期字符串每个字符的 charCode 累加形成伪随机种子，对名言数组取模得到每日固定索引，确保同一天显示相同名言而不同天自动切换。数据存储在 content\u002Fziyuan\u002Fquote.md 的 frontmatter 中，构建时通过 Astro 内容集合读取，零运行时依赖。可选客户端脚本接入一言 API 实时获取无限名言库。",[16,167,38,168],{},[40,169,160],{"href":170},"\u002Fposts\u002Fquote-of-the-day",[26,172,173],{"id":173},"时间进度条小部件",[16,175,136],{},[16,177,178],{},"年\u002F月\u002F周三个维度的进度条组件，直观展示时间流逝情况。硬编码中国法定节假日（元旦、清明、劳动节、端午、中秋、国庆）实现倒计时功能，支持自动跨年计算。纯客户端运行，页面加载时立即计算并更新 DOM，设置每日零点定时器自动刷新。进度条使用原生 progress 元素配合 CSS 伪元素自定义样式，支持深色模式适配。",[16,180,38,181],{},[40,182,173],{"href":183},"\u002Fposts\u002Fschedule-progress",[26,185,187],{"id":186},"最后","🔗 最后",[16,189,190],{},"以上功能覆盖统计、展示、交互、工具四个维度，全部基于 Firefly 主题扩展开发。每篇文章都有详细的实现步骤和代码变更，点击链接即可查看。",{"title":192,"searchDepth":193,"depth":193,"links":194},"",4,[195,197,198,199,200,201,202,203,204,205,206,207],{"id":28,"depth":196,"text":29},2,{"id":45,"depth":196,"text":45},{"id":64,"depth":196,"text":65},{"id":78,"depth":196,"text":78},{"id":91,"depth":196,"text":91},{"id":105,"depth":196,"text":106},{"id":120,"depth":196,"text":120},{"id":133,"depth":196,"text":133},{"id":147,"depth":196,"text":147},{"id":160,"depth":196,"text":160},{"id":173,"depth":196,"text":173},{"id":186,"depth":196,"text":187},[209],"Firefly","2026-07-22 19:30:00","Firefly 博客二次开发全记录，汇总所有自定义改动及其实现方式。",false,"md","https:\u002F\u002Fimg.olinl.com\u002Ffile\u002Fpost-img\u002Fcustomization-log\u002Fcover.webp",{"slots":216},{},true,"\u002Fposts\u002Fcustomization-log",null,{"text":221,"minutes":222,"time":223,"words":224},"9 min read",8.23,493800,1646,{"title":5,"description":211},{"loc":218},"posts\u002Fposts\u002Fcustomization-log",[209,229,230],"博客","二开","tech","Voa9QmH7o6UbHY7vGnRDcRMBtROjbcQFU4lhmIhg9ME",[234,238],{"title":235,"path":157,"stem":236,"date":237,"type":231,"children":-1},"Firefly 魔改：自定义鼠标指针样式","posts\u002Fposts\u002Fcustom-cursor","2026-07-21 19:41:32",{"title":239,"path":240,"stem":241,"date":242,"type":231,"children":-1},"GitHub Actions FTP 自动部署教程","\u002Fposts\u002Fftp-deploy","posts\u002Fposts\u002Fftp-deploy","2026-07-28",1788712221314]