XIUNOX 更新日志 2026-08-28 [复制链接]

管理员组



🔍 SEO 优化

  • DiscussionForumPosting 结构化数据补 text 字段:Google 规范要求必须指定 text/image/video 之一,原代码仅填 description(非规范字段)触发 Search Console 警告。route/thread.php 第 1114 行新增 text 字段,与 description 同值(首楼正文截断 120 字纯文本),QAPage 分支本已正确填 text 无需改动。

  • ProfilePage 结构化数据补 mainEntity 字段:Google 规范要求 mainEntity 指向 Person/Organization,原代码未填触发警告。route/user.php 第 44-48 行新增 mainEntity = {@type:Person, name:用户名, url:用户主页绝对URL}

  • sitemap.xml 保持现状:当前单文件包含首页+全部公开版块+最近 1000 条帖子(后台可配 sitemap_thread_limit)+版块总览+排行榜,远低于 Google 50000 URL 上限,未触发分片需求;用户主页/帖子分页 URL 经评估不加(前者涉及隐私,后者 canonical 已指向第一页 SEO 价值有限)。

  • robots.txt 动态生成:Google 抓取工具要求 Sitemap 字段必须是完整 URL(含协议+域名),相对路径 /sitemap.xml 被拒。新建 route/robots.php 输出原内容 + 末尾动态拼接 Sitemap 完整 URL(http_url_path() 拼站点根),index.php 新增 /robots.txt 早期拦截(参考 sitemap.xml 模式),删除根目录静态 robots.txt。

  • 后台 SEO 检查适配admin/route/setting.php:121 原检测静态 robots.txt 存在性,改为检测动态生成源文件 route/robots.php 是否存在,同步更新三语言 seo_check_robots_ok/missing 文案。


⚡ 性能优化

  • 渲染阻塞 CSS 异步化:用 media=print + onload 技巧将装饰性图标/组件样式移出关键渲染路径,bootstrap 布局骨架 CSS 保持同步避免 FOUC。完成:核心 header.inc.htm 两个 tabler-icons 异步 + noscript 兜底;插件 xnx_hidden/xnx_project_cost/xnx_feedsheader_link_after.htm hook CSS 异步化。frame.css 因头像框 img 定位依赖同步加载保持现状。

  • Tabler Icons 子集化压缩字体体积view/vendor/tabler-icons/tabler-icons.woff2(含 5175 字形)裁剪为仅核心+plugin 实际用到的 402 个字形,449.3KB → 43.2KB(-90%);filled 同步裁剪 70.9KB → 2.3KB。CSS 同步只保留收录 icon 映射,更新 @font-face 版本串强制刷新缓存。后台 icon 选择器可选范围=子集内。新增 tool/subset_tabler_icons.py 供后续新增 icon 后重跑,维护规则已沉淀至 project_rules.md

  • Tabler Icons filled 整合进单一字体:用 fontTools 把 18 个 filled 字形物理合并进主 woff2(402→420 字形,44.0KB),filled 图标 CSS 规则并入 tabler-icons.min.css,删除 tabler-icons-filled.min.css/.woff2 及三处 header 引用。浏览器字体请求由「1 字体+2 CSS」收敛为「1 字体+1 CSS」。

  • 字体合并偏左修复:fontTools.merge 合并同 family 字体会把字形整体平移贴到左缘(图标中心 500→375),所有图标普遍偏左。将每个字形平移到「图形中心=advance 中点 500」后全部回归,同步 hmtx 的 lsb。版本串更新 v20260828b 强制刷新缓存。规避方法已沉淀至 project_rules.md


🐛 Bug 修复

  • 首页用户数与后台仪表盘口径不一致model/runtime.func.php runtime_init() 的 users 用空 cond 触发 InnoDB 估算值,改为 user_count(array('uid'=>array('>'=>0))) 与后台一致,走精确 COUNT(*)。

  • xnx_quest 多项修复

    • 自定义任务从独立 is_custom 复选框整合进任务类型下拉(type=custom),选择时自动隐藏触发事件/人工审核配置并强制审核,旧数据编辑时自动映射。

    • 自定义任务类型下仍显示"指定版块/勋章"事件参数行:toggleType 补充隐藏事件参数行,toggleEventParams 增加 custom 类型短路。

    • "访问 URL"步骤的目标 URL 输入框不显示:补充 visit_url→target_url 字段映射。

    • 任务编辑保存改为前端提交前置校验:自定义任务访问 URL 步骤为空时拦截并 toast 提示,不再等后端报错导致已填内容被清空。

    • "文本输入"步骤前台 placeholder 误用未定义 lang 键,改用站长配置的"文本证据占位提示",未配置时回退默认占位。

  • 首页未登录站点信息用户数与后台仪表盘口径不一致model/runtime.func.php runtime_init() 的 users 用空 cond 触发 InnoDB information_schema 估算值,改为 user_count(array('uid'=>array('>'=>0))) 与后台一致,走精确 COUNT(*)。

  • [xnx_quest] 自定义任务从独立 is_custom 复选框整合进任务类型下拉(type=custom),选择时自动隐藏触发事件/人工审核配置并强制审核,仅保留步骤编辑+奖励;旧 is_custom 数据编辑时自动映射为 custom 类型,前台卡片 type 徽章新增自定义任务。

  • [xnx_quest] 自定义任务类型下仍显示"指定版块/勋章"事件参数行:toggleType 补充隐藏事件参数行,toggleEventParams 增加 custom 类型短路,彻底排除版块/勋章下拉干扰。

  • [xnx_quest] 自定义任务"访问URL"步骤的目标URL输入框不显示(class 为 target_url 但 toggleStepFields 按 visit_url 拼接 class 导致匹配不到):补充 visit_url→target_url 字段映射,选访问URL类型时正常显示目标URL输入框。

  • [改进] xnx_quest 任务编辑保存改为前端提交前置校验:自定义任务"访问URL"步骤 target_url 为空时拦截并 toast 提示、聚焦到缺失输入框,不再等后端提交后报错导致已填内容被清空需重填。

  • [xnx_quest] "文本输入"步骤前台输入框 placeholder 误用未定义 lang 键 quest_step_text_placeholder(lang() 原样返回键名显示垃圾文本),改用站长配置的"文本证据占位提示",未配置时回退默认占位。


🆕 新插件:xiunox_icon_gallery(图标库演示)

  • 前台 /icons.htm 单页展示系统当前可用的全部 420 个 Tabler 图标(402 常规 + 18 实心)。

  • 运行时直接从 tabler-icons.min.css 解析图标清单(字体子集化更新后页面自动同步)。

  • 支持名称搜索过滤、全部/常规/实心分类切换、点击图标一键复制 class(navigator.clipboard + execCommand 回退 + XN.toast 反馈)。

  • 通过 discover_register.php 自注册到发现页供开发者查阅。纯展示插件不建表无后台设置。

  • 布局修复:移除 layout_three_column 骨架,直接 header+内容+footer 渲染,内容铺满整页。


最新回复
  • xiunox 一级用户组

    感谢分享更新日志!这轮迭代很有价值:

    • SEO 修正抓住了 Google 结构化数据细节(textmainEntity ),动态 robots.txt 补全 Sitemap 绝对 URL 是必要的规范修正。
    • 性能优化很实际:Tabler Icons 子集化 + 合并后体积降 90%+,并解决 merge 导致的字形偏移,文档沉淀值得学习。
    • Bug 修复统一了统计口径,避免 InnoDB 估算误差;xnx_quest 的多个交互细节修复能明显提升后台体验。
    • 新插件仅存 420 个图标且运行时解析 CSS,便于维护,思路不错。

    若有测试环境,建议验证一下子集化字体在各浏览器下的显示,以及 /robots.txt 缓存头设置。其他用户遇到问题也可以在这里继续讨论。【 AI 自动回复,仅供参考】

    20小时前

请先登录后再回复 登录