From be5abce16a46533b663562cf225a7efdb01c9e8c Mon Sep 17 00:00:00 2001 From: QunLIn Date: Sat, 3 Oct 2026 01:11:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=84=E8=AE=BA=E7=AD=89=E7=BA=A7=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E5=90=8E=E7=AB=AF=E8=AE=A1=E7=AE=97=EF=BC=88artalk-cf?= =?UTF-8?q?=20=E4=B8=8B=E5=8F=91=E5=AE=98=E6=96=B9=20badge=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 主题原来的九品官阶用 localStorage 累计——只统计当前浏览器 渲染过的评论,换设备/清缓存就失真,别人看到的也不准。 现在后端按全站真实评论数算好,随评论 API 下发 badge_name/badge_color,官方前端原生渲染,跨设备一致。 本文件移除本地注入逻辑,友链/友圈徽章保留。 --- themes/Ying/assets/js/modules/artalk.js | 58 +++---------------------- 1 file changed, 5 insertions(+), 53 deletions(-) diff --git a/themes/Ying/assets/js/modules/artalk.js b/themes/Ying/assets/js/modules/artalk.js index c7acab3e..efb75f47 100644 --- a/themes/Ying/assets/js/modules/artalk.js +++ b/themes/Ying/assets/js/modules/artalk.js @@ -624,34 +624,10 @@ var getPageKey = function() { var processBadges = function() { if (!linkMap && !feedMap) return; - var data = loadUserCounts(); - var pageKey = getPageKey(); - var pages = data._pages || {}; - var isNewPage = !pages[pageKey]; - - // Count per-user comments on current page - var pageCounts = {}; - document.querySelectorAll('.atk-comment-wrap').forEach(function(wrap) { - var nickEl = wrap.querySelector('.atk-nick'); - if (!nickEl) return; - var name = (nickEl.textContent || '').trim(); - if (name) pageCounts[name] = (pageCounts[name] || 0) + 1; - }); - - // Accumulate: only add counts if this page hasn't been processed before - var userCounts = {}; - for (var name in pageCounts) { - var prev = data[name] || 0; - if (isNewPage) { - data[name] = prev + pageCounts[name]; - } - userCounts[name] = data[name]; - } - if (isNewPage) { - pages[pageKey] = true; - data._pages = pages; - } - saveUserCounts(data); + // 评论等级(九品官阶)已迁到评论后端:artalk-cf 按全站真实评论数 + // 计算并直接下发 badge_name/badge_color(官方 badge 槽渲染)。 + // 原 localStorage 累计方案只统计当前浏览器见过的评论,跨设备/清缓存 + // 就失真,已废弃(RANK_TABLE 保留仅作历史参考,不再注入)。 document.querySelectorAll('.atk-comment-wrap').forEach(function(wrap) { var nickEl = wrap.querySelector('.atk-nick'); @@ -700,31 +676,7 @@ var processBadges = function() { } } - // 3. Comment rank badge — inline next to name - if (!nickEl.querySelector('.atk-rank-badge')) { - var count = userCounts[nickText] || 0; - var rank = getRank(count); - var rb = document.createElement('span'); - rb.className = 'atk-rank-badge'; - rb.textContent = rank.short; - rb.title = rank.title + ' (' + count + '条评论)'; - rb.style.color = rank.color; - rb.style.backgroundColor = rank.bg; - rb.style.borderColor = rank.bg.replace(/[\d.]+\)$/, function(m) { - var v = parseFloat(m) + 0.06; - return Math.min(v, 0.26).toFixed(2) + ')'; - }); - var idx = RANK_TABLE.indexOf(rank); - if (idx > 0) { - var next = RANK_TABLE[idx - 1]; - var diff = next.min - count; - if (diff > 0) { - var progress = Math.round((count - rank.min) / (next.min - rank.min) * 100); - rb.title += ' — 距' + next.short + '还差' + diff + '条 (' + progress + '%)'; - } - } - nickEl.appendChild(rb); - } + // 3. 评论等级徽章已由后端下发(badge_name/badge_color 官方槽渲染),不再本地注入 }); };