首页此刻改2行轮播;新增孕妈广场(首页横滑话题卡+15话题瀑布流+详情点赞评论,占位内容)v26110109

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
deploy
2026-11-01 06:16:52 +00:00
parent 225fb21bf3
commit 107e02a47e
5 changed files with 3118 additions and 4 deletions

View File

@@ -3,7 +3,7 @@
(function () {
'use strict';
/* 页面版本号(YYMMDD+序号):显示在「关于兜爸心选」页底部;bump 时同步 head 注释与 ?v= */
var VER = '26110108';
var VER = '26110109';
const $ = (s, c) => (c || document).querySelector(s);
const $$ = (s, c) => Array.from((c || document).querySelectorAll(s));
@@ -4181,6 +4181,52 @@
const avaSrc = n => /^(mom|baby)-\d+$/.test(n) ? 'https://mp.yizhezhe.com/_bridge/avatars/' + n + '.png' : 'assets/img/mom/' + n + '.jpg';
const avaImg = n => '<img src="' + avaSrc(n) + '" alt="" loading="lazy" decoding="async" width="48" height="48">';
const strSeed = t => { let x = 7; for (let i = 0; i < t.length; i++) x = (x * 31 + t.charCodeAt(i)) | 0; return Math.abs(x); };
/* ================= 孕妈广场 · 首页入口(2026-11-01 第一版,占位内容) =================
用户:「在此刻下边加一个广场,放一些话题……不要像『其他妈妈也在搜』那种列表形式」
→ 一排横滑话题封面卡 + 家庭/经验小分段;话题表 window.GC_TOPICS(guangchang/topics.js,与广场页共用)。
进广场是**本站子页**(不是别的 H5 应用),所以不走 jumpApp / 不报 last_app:
相对路径 + 原样带上 location.hash(身份在 hash 里),换页前照例 reportHostLocation。 */
(function initPlaza() {
const sec = $('#gcHome'), row = $('#gchRow');
const T = window.GC_TOPICS;
if (!sec || !row || !Array.isArray(T) || !T.length) return;
const esc = s => String(s == null ? '' : s).replace(/[&<>"]/g, c => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;' })[c]);
const kfmt = n => n >= 10000 ? (n / 10000).toFixed(1).replace(/\.0$/, '') + '万' : n >= 1000 ? (n / 1000).toFixed(1).replace(/\.0$/, '') + 'k' : String(n);
function go(id) {
haptic();
const url = 'guangchang/' + (id ? '?t=' + encodeURIComponent(id) : '') + location.hash;
reportHostLocation(new URL(url, location.href).href);
location.href = url;
}
function paint(cat) {
const list = T.filter(t => !cat || t.cat === cat);
row.innerHTML = list.map(t =>
'<button type="button" class="gch-card" data-t="' + esc(t.id) + '" style="--c1:' + t.c[0] + ';--c2:' + t.c[1] + ';--ink:' + t.ink + '">' +
'<i class="gb" aria-hidden="true"></i><span class="gg" aria-hidden="true">' + esc(t.g) + '</span>' +
(t.hot ? '<span class="gh">热</span>' : '') +
'<span class="gk">' + (t.cat === 'family' ? '家庭' : '经验') + '</span>' +
'<span class="gn">' + esc(t.name) + '</span>' +
'<span class="gm">' + kfmt(t.n) + ' 篇 · ' + kfmt(t.talk) + ' 人在聊</span></button>'
).join('') +
'<button type="button" class="gch-card all" data-t=""><span class="ga" aria-hidden="true">›</span><b>全部话题</b><small>' + T.length + ' 个话题</small></button>';
row.scrollLeft = 0;
}
paint('');
const talk = T.reduce((a, t) => a + (t.talk || 0), 0);
$('#gchCnt').innerHTML = '<b>' + fmtNum(talk) + '</b> 位妈妈正在聊';
$('#gchAvs').innerHTML = ['p05', 'm07', 's03', 'k09', 'm16'].map(n => '<img src="' + avaSrc(n) + '" alt="" loading="lazy">').join('');
sec.classList.remove('hide');
row.addEventListener('click', e => { const b = e.target.closest('.gch-card'); if (b) go(b.dataset.t); });
$('#gchMore').addEventListener('click', () => go(''));
$('#gchCat').addEventListener('click', e => {
const b = e.target.closest('button[data-cat]');
if (!b || b.classList.contains('on')) return;
$$('#gchCat button').forEach(x => x.classList.toggle('on', x === b));
haptic();
paint(b.dataset.cat);
});
function fmtNum(n) { return String(n).replace(/\B(?=(\d{3})+(?!\d))/g, ','); }
})();
/* 「此刻」重绘钩子:足迹 / 档案 / 盲盒状态回来时调用(它们决定「和你比」「今日待办」和孕周) */
let plHook = null;
const fmtN = n => String(Math.round(n)).replace(/\B(?=(\d{3})+(?!\d))/g, ',');
@@ -4759,7 +4805,7 @@
esc(what).replace(/(\d+)/g, '<em>$1</em>') + '</span>' +
(go ? '<i class="pr-go" aria-hidden="true">›</i>' : '') + '</div>';
}
const FEED_N = 3; /* 常驻三行 */
const FEED_N = 2; /* 常驻两行(2026-11-01 用户:三行轮播改两行;高度见 index.html .pl-feed3 覆盖) */
const ROW_H = 30; /* = .pl-feed3 .pl-row 高度 */
function tick() {
const tr = $('#plTrack');