From 817ac9c647b0d05abbef82a171f5b2e5e51ae60d Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 18 Oct 2026 14:47:26 +0800 Subject: [PATCH] fix(user-center): drop icon before unopened VIP status name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The status card always rendered the icon slot, so never-opened members saw a generic certificate glyph in front of 未开通会员 (level 0 has no configured icon and fell back to fa-certificate). Members with a real level keep their icon; only the level-0 case drops the slot. Render the icon span only when vip_level_number > 0. Verification: extended tests/widget-system/vip-tab-status-card.test.cjs (3 contract tests); node --test tests/**/*.test.cjs 638/638 pass; php -l clean. --- inc/helpers/user-center-renderers/vip-tab.php | 3 ++- tests/widget-system/vip-tab-status-card.test.cjs | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/inc/helpers/user-center-renderers/vip-tab.php b/inc/helpers/user-center-renderers/vip-tab.php index 7fd5319a..dfa31bab 100644 --- a/inc/helpers/user-center-renderers/vip-tab.php +++ b/inc/helpers/user-center-renderers/vip-tab.php @@ -93,7 +93,8 @@ $status_html = '
' . '' . esc_html($vip_state_label) . '' . '
' . '
' - . '' + // 未开通(level 0)不输出图标位:名称前不放通用证书图标。 + . ($vip_level_number > 0 ? '' : '') . '' . esc_html($vip_level_name) . '' . '
' . '
' . esc_html($vip_description) . '
' diff --git a/tests/widget-system/vip-tab-status-card.test.cjs b/tests/widget-system/vip-tab-status-card.test.cjs index 3e05222a..d5471c3e 100644 --- a/tests/widget-system/vip-tab-status-card.test.cjs +++ b/tests/widget-system/vip-tab-status-card.test.cjs @@ -34,3 +34,10 @@ test('生效中/永久/已过期分支仍产出到期文案', () => { const assignments = vipTab.match(/\$vip_expiry_text\s*=/g) || []; assert.ok(assignments.length >= 4, '初始化 + 永久 + 生效中 + 已过期均应赋值'); }); + +test('未开通状态名称前不渲染图标位', () => { + // 图标位仅在有等级(生效中/永久/已过期)时输出;未开通(level 0)不输出, + // 避免「未开通会员」前面挂通用证书图标。 + assert.match(vipTab, /\$vip_level_number > 0 \? '' . \$status_icon"), '图标位不应再无条件渲染'); +});