Files
wordpress-theme-aksrt/tests/tab-posts-reference-alignment-2026-10-29.md

56 lines
6.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 多栏目文章新版源码复核
参考目录:`C:\Users\Xing\Desktop\zibll`。本次只对照新版 `zib_widget_ui_tab_post`,没有引入旧版模块、兼容分支或配置迁移,也没有进行浏览器截图或真实视觉效果验收。
## 参考依据
- `inc/widgets/widget-posts.php`:`zib_widget_ui_tab_post()`、`zib_widget_ui_tab_post_ajax()` 及新版字段声明。默认 mini、6 篇文章,支持 list/card/mini,首栏目直出、其他栏目按需加载,各栏目保存自己的内容。
- `inc/functions/zib-posts-list.php`:`zib_posts_mini_while()`、`zib_posts_mian_list_list()`、`zib_posts_mian_list_card()`。mini 独立输出紧凑行,list 禁用多图/无图变体;文章作者使用带主页链接及角标的头像框。
- `inc/csf-framework/classes/widget-options.class.php`:统一布局外壳、`widget-container`、模块间距、日夜背景和入场动画。
- `css/main.css`:mini 两栏/全宽三栏/侧栏与移动端单栏、栏目导航、文章与分页间距;标题沿用 Bootstrap 默认 500 字重,显式加粗配置另行生效。
- `inc/functions/functions.php`:追加分页的末页边界,以及数字分页的首尾、相邻页、省略号、上一页/下一页和跳转。
## 修复内容
- 将外壳、骨架和内容的样式选择统一到 `PostRenderer::style()`,缺省多栏目文章始终使用 mini,后续 AJAX 页面沿用相同规则。
- 新版多栏目文章走统一参考外壳,补回全宽区域的居中限宽容器,并应用 PC/移动端额外间距、日夜背景和动画。
- 小工具显式关闭页面上下文及无间距布局。修正共享渲染器对显式 `no_margin=false` 的处理,避免首页的无间距设置改写小工具;普通页面未显式指定时仍继承站点设置。
- 修正公共标题排版对小工具的覆盖,恢复默认标题字重、mini 文本颜色、行高及紧凑行的对齐方式,同时保留显式加粗。
- 作者信息改用现有统一头像框,恢复主页链接与角标。清理不再消费的裸头像 URL 字段;mini 日期按参考主题使用列表排序的时间来源。
- 数字分页补回首尾、上一页/下一页、省略号、桌面/移动端不同的窗口及跳页;恢复参考分页尺寸,避免公共分页样式将按钮和跳转框撑大。
- 追加分页到末页不再生成下一页按钮;请求失败重试保留失败页及追加方式,避免覆盖已有文章。
- 栏目切换保留已加载内容和页码;溢出导航按实际元素矩形居中,支持键盘切换;AJAX 成功后初始化新文章的图片和公共交互。
- 移除重复的 Bootstrap Tab 触发属性、失效的旧栏目选择器及未使用的 `widget_style` 配置字段。新版栏目只有一个交互处理入口。
## 验证方式
- `tab-posts-render-harness.php` 加载实际文章数据收集、配置和 markup 模块,生成有文章的 default/mini/list/card、分页、移动端及完整前端外壳输出。没有使用空查询或假文章渲染器代替真实内容。
- `tab-posts-render-behavior.test.cjs` 检查上述输出、未归一化参数、页面上下文隔离、分页边界、头像及时间来源。
- `tab-posts-runtime.test.cjs` 在 Node VM 中运行实际前端脚本,验证栏目缓存、键盘焦点、导航滚动、追加重试、跳页及与旧运行时事件隔离。
- `tab-posts-style-contract.test.cjs` 检查覆盖公共排版/分页样式所需的局部选择器及桌面、移动端样式契约。
- 验证范围为源码、渲染输出、脚本行为和构建检查;不将这些检查描述为像素级视觉验收。
上一轮结果:仓库全部 Node 测试 785/785 通过(包含本次新增 24 项);小工具 PHP 测试 139 条断言通过;修改的 7 个 PHP 文件语法检查、前端 JS 语法检查、CSS 解析、后台 SPA 构建及差异空白检查通过。
## mini 付费标签补充复核
对照 `zib_get_posts_list_pay_badge()`、`zibpay_get_pay_type_icon()`、`zibpay_get_points_mark()`、`zibpay_get_vip_icon()` 及对应 CSS,修正以下差异:
- compact 标签直接从标准付费元数据读取公开价格,独立渲染类型图标、`em09` 货币/积分符号和金额;不复用大列表的整段价格文案或当前用户折扣价。
- 免费内容先于购买等级限制判断,显示类型图标与“免费”,提示文字使用对应免费类型;会员专属只在会员功能启用时使用相应等级的 VIP 标签。
- VIP 图片恢复 `img-icon mr3`、通用图片懒加载及会员名称提示,删除证书字形替代与强制 1em 正方形图片规则,保持图文同行和图片原有比例。
- 在小工具样式中固定付费标签的 4px 水平内边距,消除公共按钮样式在不同页面覆盖造成的差别;非链接标签恢复普通光标。
- `mini-pay-badge-reference.test.cjs` 检查真实 mini 渲染输出的四种付费类型、现金、积分、免费、两级 VIP、会员开关、标签位置和样式规则。
补充验证结果:新增 6 项付费标签测试通过,仓库全部 Node 测试 791/791 通过;139 条 PHP 断言、修改文件的 PHP 语法检查、CSS 解析、公共资源构建、后台 SPA 构建和差异空白检查通过。未进行真实视觉效果验收。
## 分页骨架加载时机修复
对照参考主题 `js/main.js` 中 `post_ajax()` 的 `beforeSend`:替换分页需要在发出请求前移除旧文章,骨架才会占据新页内容的位置。原实现直到响应成功才移除旧文章,导致数字分页和跳页期间骨架仍追加在旧页下方。
- 替换请求先暂存并移除旧页内容和分页控件,保留同一个骨架节点;成功时插入新页,失败时恢复原节点,并允许重试目标页。
- 追加请求继续保留已有文章,在末尾展示骨架。合并响应成功后的内容插入逻辑,删除延迟清空旧页的重复分支。
- 新增 4 项请求尚未完成时的行为测试,覆盖数字分页、连续切页、失败恢复与重试、加载更多、跳页和栏目隔离;修复测试 DOM 对后代选择器的匹配,确保栏目隔离断言定位到正确栏目。
验证结果:全部 Node 测试 795/795 通过,139 条 PHP 断言通过,前端脚本语法、公共资源构建、后台 SPA 构建和差异空白检查通过。未进行真实视觉效果验收。