From da1a77a3134c5ab104e15923e1da30bc8497f000 Mon Sep 17 00:00:00 2001 From: QunLIn Date: Sat, 3 Oct 2026 13:08:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=8B=E9=93=BE=E7=94=B3=E8=AF=B7=E5=8D=A1?= =?UTF-8?q?=E7=89=87=E6=94=B9=E6=8C=82=E7=BD=AE=E9=A1=B6=E8=AF=84=E8=AE=BA?= =?UTF-8?q?=20+=20=E5=BC=B9=E7=AA=97=E6=8C=82=20body=20=E5=8A=A0=E6=AF=9B?= =?UTF-8?q?=E7=8E=BB=E7=92=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 置顶评论卡片化:管理员置顶且内容含「友链自助申请」的评论, 整条解析成申请入口卡片(隐藏昵称/页脚,渐变虚线卡片,点击打开 申请弹窗),其余置顶评论不受影响 - 弹窗 DOM 动态挂 document.body:评论容器带 transform 动画会把 position:fixed 劫持成相对定位,导致遮罩/表单跟着容器变形—— 挂 body 彻底规避 - 遮罩加 backdrop-filter 毛玻璃(GPU 合成,不影响页面性能) --- themes/Ying/assets/js/modules/artalk.js | 57 ++++++++ themes/Ying/layouts/page/comment.html | 164 ++++++++++++------------ 2 files changed, 141 insertions(+), 80 deletions(-) diff --git a/themes/Ying/assets/js/modules/artalk.js b/themes/Ying/assets/js/modules/artalk.js index f2d0627a..864bf0e4 100644 --- a/themes/Ying/assets/js/modules/artalk.js +++ b/themes/Ying/assets/js/modules/artalk.js @@ -686,6 +686,63 @@ artalk.on('comment-rendered', function(node) { injectBadge(nickEl, 'atk-rank-badge', data.rank_name, tip, data.rank_color || '', data.rank_bg || ''); } } catch (e) { /* 徽章注入失败不影响评论 */ } + + // ── 置顶评论卡片化:管理员置顶且内容含「友链自助申请」的评论, + // 整条解析成申请入口卡片(点击打开申请弹窗),其余置顶评论不受影响。 + try { + var d2 = null; + if (node && typeof node.getData === 'function') d2 = node.getData(); + else if (node && node.comment && typeof node.comment.getData === 'function') d2 = node.comment.getData(); + else d2 = node; + var el2 = null; + if (node && node.$el) el2 = node.$el; + else if (node && typeof node.getEl === 'function') el2 = node.getEl(); + if (!d2 || !d2.is_pinned || !el2) return; + var content = String(d2.content || ''); + if (content.indexOf('友链自助申请') === -1) return; + if (el2.querySelector('.atk-fl-apply')) return; + + el2.classList.add('atk-fl-apply'); + el2.style.cursor = 'pointer'; + el2.title = '点击申请友链'; + + // 隐藏评论常规元素(昵称行/页脚操作),整条变成一张卡片 + var hd = el2.querySelector('.atk-header'); + var ft = el2.querySelector('.atk-footer'); + if (hd) hd.style.display = 'none'; + if (ft) ft.style.display = 'none'; + var meta = el2.querySelector('.atk-meta'); + if (meta) meta.style.display = 'none'; + + var main = el2.querySelector('.atk-main') || el2; + var contentEl = main.querySelector('.atk-content'); + var card = document.createElement('div'); + card.className = 'atk-fl-apply'; + card.style.cssText = 'display:flex;align-items:center;gap:12px;padding:16px 18px;margin:6px 0;' + + 'background:linear-gradient(135deg,rgba(47,158,99,.08),rgba(47,158,99,.02));' + + 'border:1px dashed rgba(47,158,99,.45);border-radius:10px;transition:border-color .2s,transform .2s;'; + card.innerHTML = + '🔗' + + '' + + '友链自助申请' + + '想和我交换友链?点这里填写申请,审核结果会邮件通知你' + + '' + + '›'; + if (contentEl) { + contentEl.innerHTML = ''; + contentEl.appendChild(card); + contentEl.style.cursor = 'pointer'; + } else { + main.appendChild(card); + } + + el2.addEventListener('click', function () { + if (window.flApplyOpenModal) window.flApplyOpenModal(); + }); + el2.addEventListener('mouseenter', function () { card.style.borderColor = 'rgba(47,158,99,.8)'; }); + el2.addEventListener('mouseleave', function () { card.style.borderColor = 'rgba(47,158,99,.45)'; }); + } catch (e) { /* 卡片化失败不影响评论 */ } }); artalk.on('list-loaded', function() { diff --git a/themes/Ying/layouts/page/comment.html b/themes/Ying/layouts/page/comment.html index cce99f28..f9a5008c 100644 --- a/themes/Ying/layouts/page/comment.html +++ b/themes/Ying/layouts/page/comment.html @@ -11,18 +11,6 @@ - 图标:{{ .Site.Params.message_info.icon | default .Site.Params.author.avatar }} - - - {{ $rssBase := site.Params.rssapi.base | default "https://api.200181.xyz" }} - - - - 友链自助申请 - 想和我交换友链?点这里填写申请,审核结果会邮件通知你 - - -
@@ -32,77 +20,93 @@
- - - -{{ end }} +{{ end }} \ No newline at end of file