From 79c1e51d5c91868efc2ab417f3d358b41cfc5a08 Mon Sep 17 00:00:00 2001 From: QunLIn Date: Sat, 3 Oct 2026 13:37:22 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=84=E8=AE=BA=E5=BE=BD=E7=AB=A0=E5=85=A8?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E6=8C=89=E4=BC=98=E5=85=88=E7=BA=A7=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=20+=20=E6=96=B0=E5=A2=9E=E9=87=91=E8=89=B2=E5=A4=B4?= =?UTF-8?q?=E8=A1=94=E5=BE=BD=E7=AB=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 徽章不再互斥:满足条件全部展示,排序 = 系统徽章(博主等) > 头衔(新增)> 友链 > 友圈 > 官职 - 头衔徽章:后端 users 表新增 title_name 字段,管理面板用户编辑 可设置,金色 UI 与官职一致,优先级仅次于系统徽章 - 官方 badge-wrap 挪进昵称元素内,保证与主题徽章的排序正确 --- themes/Ying/assets/js/modules/artalk.js | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/themes/Ying/assets/js/modules/artalk.js b/themes/Ying/assets/js/modules/artalk.js index 864bf0e4..82a1caf3 100644 --- a/themes/Ying/assets/js/modules/artalk.js +++ b/themes/Ying/assets/js/modules/artalk.js @@ -669,17 +669,23 @@ artalk.on('comment-rendered', function(node) { var host = null; try { if (data.link) host = normalizeHost(new URL(data.link).hostname); } catch (e) {} - // 优先级:友链 > 友圈 > 官职(互斥,只注入一枚主题徽章) var linkMatch = matchBadge(linkMap, host, nickLower); - if (linkMatch) { - injectBadge(nickEl, 'atk-link-badge', '友链', '友链: ' + linkMatch); - return; - } var feedMatch = matchBadge(feedMap, host, nickLower); - if (feedMatch) { - injectBadge(nickEl, 'atk-feed-badge', '友圈', '友圈: ' + feedMatch); - return; + + // 官方系统徽章(博主等)由 Artalk 渲染在 .atk-badge-wrap,把它挪进 + // 昵称元素内,保证视觉顺序:系统徽章 > 头衔 > 友链 > 友圈 > 官职 + var badgeWrap = el.querySelector('.atk-badge-wrap'); + if (badgeWrap && badgeWrap.parentNode !== nickEl) nickEl.appendChild(badgeWrap); + + // 1) 头衔徽章(金色,管理员在后台手动设置,仅次于系统徽章) + if (data.title_name && !nickEl.querySelector('.atk-title-badge')) { + injectBadge(nickEl, 'atk-title-badge', data.title_name, '头衔: ' + data.title_name, '#b8860b', 'rgba(197,136,27,.16)'); } + // 2) 友链 + if (linkMatch) injectBadge(nickEl, 'atk-link-badge', '友链', '友链: ' + linkMatch); + // 3) 友圈 + if (feedMatch) injectBadge(nickEl, 'atk-feed-badge', '友圈', '友圈: ' + feedMatch); + // 4) 评论官职(按全站评论数) if (data.rank_name && !nickEl.querySelector('.atk-rank-badge')) { var tip = data.rank_title || data.rank_name; if (data.rank_count != null) tip += ' (' + data.rank_count + '条评论)';