孕妈广场按孕周 6 段出帖:新增 59 篇(孕早期/9-13周/14-20周/37周+),120 篇旧帖标题口语化、去负面;179 篇全部配图(Burst 真实照片为主);首页卡堆和广场页按孕周排(同段为主+穿插过来人,feed.js);隐藏评论时间与发帖日期;修「查看全部问题」点了没反应(openQA 变量先用后声明);品牌露出效果稿 ?brand=1;v26110202
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -4,30 +4,38 @@
|
||||
(function () {
|
||||
var sec = document.getElementById('gcHome'), T = window.GC_TOPICS;
|
||||
if (!sec || !Array.isArray(T) || !T.length) return;
|
||||
function init() {
|
||||
var esc = function (s) { return String(s == null ? '' : s).replace(/[&<>"]/g, function (c) { return { '&': '&', '<': '<', '>': '>', '"': '"' }[c]; }); };
|
||||
var kfmt = function (n) { return n >= 10000 ? (n / 10000).toFixed(1).replace(/\.0$/, '') + '万' : n >= 1000 ? (n / 1000).toFixed(1).replace(/\.0$/, '') + 'k' : String(n); };
|
||||
var ava = function (n) { return 'assets/img/mom/' + n + '.jpg'; };
|
||||
var reduce = window.matchMedia && matchMedia('(prefers-reduced-motion: reduce)').matches;
|
||||
var CAT_CN = { family: '家庭婚姻', work: '职场', baby: '经验' };
|
||||
var TOP = {}; T.forEach(function (t) { TOP[t.id] = t; });
|
||||
/* 精选笔记(摘自 guangchang/data.js):[话题id, 标题, 作者, 孕周, 点赞, 照片] */
|
||||
var N = {
|
||||
family: [['f01', '怀孕后我妈每天三个电话,第四个是我爸打的', '栗子慢慢', '孕22周', 1286, 'd9d596acde1f'], ['f03', '表姑说我肚子尖肯定是男孩,我回家对着镜子看了半天', '一颗糖糖', '孕24周', 1680, 'ed263579a24d'], ['f04', '我家清淡婆家重口,孕期一桌菜吃出了两种味道', '桃子味汽水', '孕26周', 1940, 'bcfe0afdde7c'], ['f05', '关心太密的时候,我试着给自己留出了一点空间', '夏天的柚子', '孕31周', 1730, 'e2736880c759'], ['f06', '婆婆远在老家,每天给我转发十几条养胎文章', '远方的橙', '孕23周', 1460, 'cbd9db78f705'], ['f07', '我想顺其自然,我妈要我天天躺着保胎,我们僵了一周', '半杯温水', '孕19周', 1390, '9ed29de3419c'], ['f02', '奶奶让我别伸手晾衣服,说会绕脐带,我差点当场反驳', '青柠小满', '孕25周', 1520, '5cc12b5ca19d']],
|
||||
work: [['w04', '赶方案到晚上九点,第一次感觉到胎动是在工位上', '七月的汽水', '孕21周', 2410, '6b374c98a040'], ['w01', '孕 11 周还没告诉领导,周会上差点没忍住吐出来', '青柠半杯', '孕16周', 1862, '874abee3d741'], ['w02', '第一次请产检假,我在领导门口来回走了三趟', '芋圆奶冻', '孕19周', 1544, '41ceb30d229a'], ['w03', '孕 20 周,会议室的椅子让我第一次意识到这件事', '半糖布丁', '孕24周', 1398, '0eb3d4ebc595'], ['w05', '孕 15 周在电梯里头晕,我还笑着说是没吃早饭', '蓝莓小山', '孕18周', 1683, 'bd8a5ddc39f5'], ['w06', '每天被问「今天还好吗」,我开始害怕走进办公室', '芒果西米露', '孕23周', 1576, '657bd5779003'], ['w08', '交接会上讲完最后一页,我在洗手间待了十分钟', '红豆沙沙', '孕35周', 2130, 'b88db204c69f']],
|
||||
baby: [['b07', '我的顺产经历:对我来说最难熬的不是疼,是等', '小船靠岸', '宝宝3个月', 3126, '6440eaf30b5a'], ['b03', '孕20周半夜刷到一个案例,我躺在床上哭到凌晨', '不刷了周周', '孕22周', 2734, 'e4ff8785f404'], ['b02', '孕28周翻了下记账本,零碎小钱加起来吓我一跳', '记账的鱼', '孕28周', 2106, 'c5443c035a02'], ['b04', '孕30周囤了一柜子小衣服,宝宝出生后一半没穿上', '囤囤收手了', '宝宝5个月', 2251, '269846ead50f'], ['b05', '每次产检称体重前,我都会偷偷把外套脱掉', '秤上的梨', '孕26周', 1978, '81541ebb328d'], ['b06', '关于留意胎动,医生教的方法让我不再整天瞎想', '夜里数星星', '孕30周', 1687, 'fba0aa35ada9'], ['b01', '烧心鼻塞加腿抽筋,同事一句「都这样」让我闭了嘴', '豆豆妈咪', '孕21周', 1862, 'b9f151713ad0']]
|
||||
};
|
||||
/* 11-02 用户:广场帖子跟「其他妈妈也在搜」一样按孕周 6 段走 —— 多数是同阶段孕妈的帖子,穿插过来人(已生完)的。
|
||||
帖子清单在 guangchang/feed.js(由 data.js 生成的轻量索引 + 排序函数 GC_ORDER),孕周取 app.js 广播的 window.__mbPreg。 */
|
||||
var MOMS = ['m03', 'p02', 'm07', 'p05', 'm11', 'p09', 'm14', 'm16', 'p12', 'm19', 'm21', 'p07'];
|
||||
function userBand() {
|
||||
var pg = window.__mbPreg || {};
|
||||
return pg.postpartum ? 'pp' : (pg.week && window.GC_BAND ? window.GC_BAND('孕' + pg.week + '周') : -1);
|
||||
}
|
||||
function notes(cat) {
|
||||
var l = cat ? N[cat] : [N.family[0], N.work[0], N.baby[0], N.family[1], N.work[1], N.baby[1], N.family[2]];
|
||||
return l.map(function (a, i) { return { t: a[0], title: a[1], author: a[2], stage: a[3], likes: a[4], photo: 'guangchang/img/' + a[5] + '.jpg', av: MOMS[(i * 5 + (cat ? cat.length : 0)) % MOMS.length] }; });
|
||||
if (!window.GC_ORDER) return [];
|
||||
var F = window.GC_FEED || [], ub = userBand();
|
||||
var l = window.GC_ORDER(F.filter(function (n) { return n.photo && (!cat || (TOP[n.t] || {}).cat === cat); }), ub);
|
||||
if (!cat) { /* 「全部」:同一分类最多 3 张,三类穿插着来 */
|
||||
var cnt = {}, out = [];
|
||||
l.forEach(function (n) { var c = (TOP[n.t] || {}).cat; if (out.length < 7 && (cnt[c] || 0) < 3) { cnt[c] = (cnt[c] || 0) + 1; out.push(n); } });
|
||||
l = out;
|
||||
}
|
||||
return l.slice(0, 7).map(function (n, i) { return { t: n.t, id: n.id, title: n.title, author: n.author, stage: n.stage, likes: n.likes, photo: n.photo, av: MOMS[(i * 5 + (cat ? cat.length : 0)) % MOMS.length] }; });
|
||||
}
|
||||
function topics(cat) {
|
||||
var l = T.filter(function (t) { return !cat || t.cat === cat; });
|
||||
var hot = l.filter(function (t) { return t.hot; });
|
||||
return (cat ? hot : hot.filter(function (_, i) { return i % 3 === 0; })).concat(l.filter(function (t) { return !t.hot; })).slice(0, 3);
|
||||
}
|
||||
function go(id) {
|
||||
location.href = 'guangchang/' + (id ? '?t=' + encodeURIComponent(id) : '') + location.hash;
|
||||
function go(id, nid) {
|
||||
location.href = 'guangchang/' + (id ? '?t=' + encodeURIComponent(id) + (nid ? '&n=' + encodeURIComponent(nid) : '') : '') + location.hash;
|
||||
}
|
||||
|
||||
sec.className = sec.className.replace(/\bgv\d\b/g, '') + ' gv4';
|
||||
@@ -47,7 +55,7 @@
|
||||
|
||||
function storyCard(n) {
|
||||
var tp = TOP[n.t] || {}, cat = tp.cat || 'family';
|
||||
return '<div class="g4-card st c-' + cat + '" data-t="' + esc(n.t) + '" role="button" tabindex="0">' +
|
||||
return '<div class="g4-card st c-' + cat + '" data-t="' + esc(n.t) + '" data-n="' + esc(n.id) + '" role="button" tabindex="0">' +
|
||||
'<img class="g4-ph" src="' + esc(n.photo) + '" alt="" loading="lazy" decoding="async" draggable="false">' +
|
||||
'<span class="g4-k">' + CAT_CN[cat] + '</span>' +
|
||||
'<span class="g4-bot"><b class="g4-tt">' + esc(n.title) + '</b>' +
|
||||
@@ -153,11 +161,11 @@
|
||||
var c = e.target.closest('.g4-card');
|
||||
if (!c) return;
|
||||
if (c !== cards[idx]) { next(); return; } // 点到后面露出的卡角 → 翻到下一张
|
||||
go(c.dataset.sub ? '' : c.dataset.t);
|
||||
go(c.dataset.sub ? '' : c.dataset.t, c.dataset.n);
|
||||
});
|
||||
deck.addEventListener('keydown', function (e) {
|
||||
if (e.key === 'ArrowRight') next(); else if (e.key === 'ArrowLeft') prev();
|
||||
else if (e.key === 'Enter') { var c = cards[idx]; if (c) go(c.dataset.sub ? '' : c.dataset.t); }
|
||||
else if (e.key === 'Enter') { var c = cards[idx]; if (c) go(c.dataset.sub ? '' : c.dataset.t, c.dataset.n); }
|
||||
});
|
||||
sec.querySelector('.g4-arr.next').addEventListener('click', next);
|
||||
sec.querySelector('.g4-arr.prev').addEventListener('click', prev);
|
||||
@@ -169,5 +177,13 @@
|
||||
[].forEach.call(sec.querySelectorAll('.g4-cat button'), function (x) { x.classList.toggle('on', x === b); });
|
||||
paint(b.dataset.cat);
|
||||
});
|
||||
/* 孕周变了(档案里改了 / 孕期数据晚到)→ 段变了才重排,免得翻到一半被打回第 1 张 */
|
||||
var lastUB = userBand();
|
||||
window.addEventListener('mb-preg', function () { var u = userBand(); if (u !== lastUB) { lastUB = u; paint(cur, true); } });
|
||||
paint('', true);
|
||||
sec.dispatchEvent(new Event('gc4-ready')); /* V6 合并版等这个再往里插「其他妈妈也在搜」 */
|
||||
}
|
||||
/* feed.js 首页默认不加载(index.html 只引了 topics.js),这里按需拉一次 */
|
||||
if (window.GC_FEED) init();
|
||||
else { var fs = document.createElement('script'); fs.src = 'guangchang/feed.js?v=26110202'; fs.onload = fs.onerror = init; document.body.appendChild(fs); }
|
||||
})();
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
var l = document.createElement('link'); l.rel = 'stylesheet'; l.href = 'demo/gch/v4.css?' + Date.now();
|
||||
document.head.appendChild(l);
|
||||
var s = document.createElement('script'); s.src = 'demo/gch/v4.js?' + Date.now();
|
||||
s.onload = merge;
|
||||
s.onload = function () { if (sec.querySelector('.g4-foot')) merge(); else sec.addEventListener('gc4-ready', merge, { once: true }); }; /* v4 要先拉 feed.js 才渲染 */
|
||||
document.body.appendChild(s);
|
||||
|
||||
var FIRE = '<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12.6 2.5c.4 3-1.6 4.6-3 6.2C8 10.4 7 12 7 14.3A5 5 0 0012 19.5a5 5 0 005-5.2c0-2-1-3.6-1.9-4.6-.2 1.3-.9 2.2-1.9 2.6.6-3.4-.2-7-.6-9.8z" fill="currentColor"/><path d="M12 19.5a2.6 2.6 0 01-2.6-2.6c0-1.6 1.3-2.5 2-3.6.3 1 .9 1.6 1.6 1.9.9.4 1.6 1.2 1.6 2.1A2.6 2.6 0 0112 19.5z" fill="#FFD36B"/></svg>';
|
||||
@@ -90,7 +90,7 @@
|
||||
if (!bank || !bank.length) { box.style.display = 'none'; return; }
|
||||
BANK = bank; paintList();
|
||||
if (bank.length > 6) {
|
||||
all.textContent = '查看全部 ' + bank.length + ' 个问题 ›';
|
||||
all.textContent = '查看全部问题 ›';
|
||||
all.classList.remove('hide');
|
||||
/* 全部问题页在 app.js 里(openQA),借原来那块的「查看全部」按钮触发 */
|
||||
all.addEventListener('click', function () { var o = document.getElementById('msAll'); if (o) o.click(); });
|
||||
|
||||
Reference in New Issue
Block a user