Files
wordpress-theme-aksrt/.zcode/plans/plan-sess_9dedb041-3430-4063-9835-8825229111bc.md
T
2026-08-23 15:25:39 +08:00

2.9 KiB

背景结论(回答"为什么没接入")

Toast 系统(notyf)其实已在所有前台页面全局加载(handle aksrt-notyf,assets/js/notyf.js 暴露 window.notyf(message, type)),公开主页上举报、面板加载失败也都在用。真正的缺口:

  1. 关注/取消关注成功时零反馈:assets/js/follow.js:40-42 成功后只翻转按钮状态,不调用 notyf()(对比文章页点赞/收藏 article.js:225/250 成功失败都有提示)——这是"页面没接 Toast"观感的来源。
  2. 依赖声明不规范:author.js 调用了 7 处 notyf(),但 handle aksrt-author(ScriptsPart1b.php:335)只声明 ['loader_js'],靠全局加载碰巧可用。
  3. 相邻 bug:data-aksrt-follow 按钮在文章页作者栏(single-author-bar.php:116、aksrt-single-render.php:442)、WidgetSystem 用户卡(UserRenderer.php:102)、身份铭牌(aksrt-identity.php:226)等多处渲染,但 follow.js 只在用户中心/公开主页路由注册 → 这些位置按钮是死的(用户已确认一并修复)。

改动内容

1. assets/js/follow.js — 补齐成功 Toast(核心)

成功分支(updateFollowButton(...) 之后)增加:

notyf(isFollowing ? '关注成功' : '已取消关注', 'success');

遵循 article.js 点赞/收藏既有惯例:客户端写死文案、两种状态都用 success(后端 follow_toggle 不返回 message,与点赞/收藏接口一致)。

2. src/Core/ScriptsPart1b.php + src/Core/ScriptsPart1c.php — follow.js 提升为全局注册

  • 删除 ScriptsPart1b.php:318-328 $is_profile_page 块内的 aksrt-follow 注册;
  • 在 ScriptsPart1c.php 全局栈(aksrt-runtime 注册之后,约 165 行处)全局注册,依赖 ['aksrt-notyf', 'aksrt-runtime']——显式声明依赖 aksrt-runtime 是因为 aksrtData(REST 地址 + nonce,follow.js IIFE 解析期就要读)localize 在该 handle 上,把目前"靠 footer 打印顺序碰巧正确"变为确定的依赖顺序。
  • 效果:文章页作者栏、任意位置的用户卡片关注按钮恢复可用,并获得同样的 Toast 反馈。脚本仅 ~100 行、单个委托点击监听,全局加载成本可忽略(与已全局加载的 notyf/runtime/core modules 一致)。

3. src/Core/ScriptsPart1b.php:335 — aksrt-author 显式声明 notyf 依赖

['loader_js'] → ['loader_js', 'aksrt-notyf']。

验证

  • php -l 检查两个改动的 PHP 文件。
  • 浏览器实测(桌面 + 移动):公开主页关注/取消关注弹出 success Toast、按钮翻转、粉丝数更新;未登录/网络失败路径弹 danger Toast;文章页作者栏关注按钮可点击且有提示;Tab 无刷新切换不受影响。
  • node --test tests/widget-system/post-visual-contract.test.cjs 确认无回归(未改标记,应通过)。

提交

单条提交,遵循仓库 Conventional Commit 风格:fix(frontend): 关注操作接入 notyf 成功提示并将关注脚本改为全局加载。