feat(site): 页脚 + README 增加扫码关注(公众号 + 抖音二维码)

- 官网页脚新增"扫码关注"区块:公众号 AI不止语 + 抖音 @AI不止语(AIBZY)
  两张二维码并排展示(中英 i18n + 响应式)
- README 交流区在公众号文案处嵌入公众号二维码
- 二维码自托管于 assets/,CSP img-src 'self' 已允许,无需放行外域

资源:site/template/assets/qr-{wechat,douyin}.jpg(站点)、assets/qr-wechat.jpg
(README);build.mjs 增加拷贝逻辑 + 页脚 figure 区块 + i18n 文案;
styles.css 增加 .foot-qr/.qr-card 样式。

验证:重建 42 页;两张 QR 拷入 dist;页脚区块生成;CSP 不受影响。
This commit is contained in:
AI不止语
2026-06-20 06:04:15 +08:00
parent 54d0e94776
commit cc1148887e
6 changed files with 20 additions and 0 deletions

View File

@@ -281,6 +281,8 @@ npx superpowers-zh@latest --uninstall
微信公众号 **「AI不止语」**(微信搜索 `AI_BuZhiYu`)— 技术问答 · 项目更新 · 实战文章
<img src="assets/qr-wechat.jpg" width="180" alt="微信公众号 AI不止语 二维码">
| 渠道 | 加入方式 |
|------|---------|
| QQ 2群 | [点击加入](https://qm.qq.com/q/EeNQA9xCxy)(群号 1071280067 |

BIN
assets/qr-wechat.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -150,6 +150,7 @@ const T = {
],
footTag: 'AI 编程超能力 · 中文增强版 · MIT License',
copyright: '© 2026 superpowers-zh · MIT License',
followUs: '扫码关注', qrWechat: '公众号 · AI不止语', qrDouyin: '抖音 · @AI不止语AIBZY',
copy: '复制', copied: '已复制 ✓',
backToSkills: '← 返回全部 Skill',
detailInstall: '安装此 skill',
@@ -234,6 +235,7 @@ const T = {
],
footTag: 'AI coding superpowers · Chinese-enhanced · MIT License',
copyright: '© 2026 superpowers-zh · MIT License',
followUs: 'Follow us', qrWechat: 'WeChat · AI不止语', qrDouyin: 'Douyin · @AI不止语 (AIBZY)',
copy: 'Copy', copied: 'Copied ✓',
backToSkills: '← Back to all skills',
detailInstall: 'Install this skill set',
@@ -340,6 +342,13 @@ ${extraHead}</head>
</header>
${body}
<footer>
<div class="foot-qr">
<h4 class="qr-title">${t.followUs}</h4>
<div class="qr-row">
<figure class="qr-card"><img src="${base}assets/qr-wechat.jpg" alt="${esc(t.qrWechat)}" width="158" loading="lazy"><figcaption>${t.qrWechat}</figcaption></figure>
<figure class="qr-card"><img src="${base}assets/qr-douyin.jpg" alt="${esc(t.qrDouyin)}" width="158" loading="lazy"><figcaption>${t.qrDouyin}</figcaption></figure>
</div>
</div>
<div class="foot-inner foot-cols">
<div class="foot-brand">
<strong>superpowers<b>-zh</b></strong>
@@ -532,6 +541,8 @@ function build() {
copyFileSync(join(ROOT, 'assets', 'app-icon.png'), join(DIST, 'assets', 'app-icon.png'));
copyFileSync(join(ROOT, 'assets', 'superpowers-small.svg'), join(DIST, 'assets', 'superpowers-small.svg'));
copyFileSync(join(ROOT, 'assets', 'sponsors', '5cookie-code.png'), join(DIST, 'assets', 'sponsors', '5cookie-code.png'));
copyFileSync(join(TEMPLATE, 'assets', 'qr-wechat.jpg'), join(DIST, 'assets', 'qr-wechat.jpg'));
copyFileSync(join(TEMPLATE, 'assets', 'qr-douyin.jpg'), join(DIST, 'assets', 'qr-douyin.jpg'));
// 中文站(根)
writeFileSync(join(DIST, 'index.html'), layout({

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -252,6 +252,13 @@ footer { border-top: 1px solid var(--border-soft); margin-top: 40px; padding: 40
.foot-inner nav a:hover { color: var(--accent-2); }
.copyright { max-width: var(--maxw); margin: 24px auto 0; font-size: 12.5px; color: var(--text-faint); text-align: center; }
.copyright a { color: var(--text-dim); }
/* 扫码关注 */
.foot-qr { max-width: var(--maxw); margin: 0 auto 36px; text-align: center; }
.qr-title { font-size: 14px; color: var(--text-dim); font-weight: 600; margin-bottom: 18px; }
.qr-row { display: flex; gap: 28px; justify-content: center; flex-wrap: wrap; }
.qr-card { margin: 0; }
.qr-card img { width: 158px; height: auto; border-radius: 12px; background: #fff; display: block; border: 1px solid var(--border-soft); }
.qr-card figcaption { margin-top: 10px; font-size: 12.5px; color: var(--text-faint); }
/* ---------- 响应式 ---------- */
@media (max-width: 720px) {