0; // 显示名一律走「我怎么称呼他」:同一个孩子,爸爸看到"儿子"、妈妈看到"小宝"。 // ⚠️ 用**已经取好的那张表**(target_id => 我叫他什么)做本地查表, // 不要再对每个人调一次 Nickname::display() —— 那是每人一条 SQL。 // 没有称呼的人回落到姓名,所以永远不会出现空白名字。 $shownOf = function (array $row) use ($myNicknames): string { $nk = (string)($myNicknames[(int)($row['id'] ?? 0)] ?? ''); return $nk !== '' ? $nk : (string)($row['name'] ?? ''); }; // 有亲属关系 → 只显示家人;还没建 → 退回显示全名册,别让首页空着 $list = $hasRel ? $kin : []; if (!$list) { foreach (\App\Person::all((int)\App\Auth::familyId(), '', 'member', (int)$meId) as $p) { $p['label'] = ''; $list[(int)$p['id']] = $p; } } // 标题下的一行小字:我的一句话 → 家庭统一那句 → 兜底 $motto = trim((string)$mySlogan); $mottoIsMine = $motto !== ''; if (!$mottoIsMine) { $motto = trim((string)($family['motto'] ?? '')); } if ($motto === '') { $motto = '一本用岁月写成的家谱'; } // 生日事件上用简称,卡片才不会一行塞不下;长名字在详情页里出 $shortKind = ['id' => '身份证生日', 'solar' => '阳历生日', 'lunar' => '农历生日']; ?> = e(\App\Auth::homeTitle()) ?> = e($motto) ?> 我的一句话 = (int)$kinCount ?>与我有关 = (int)$allCount ?>名册总数 = (int)$relCount ?>亲属连线 接下来的日子 两个月内 = e($bshown) ?> = e($b['label']) ?> 就是今天,生日快乐 还有 = (int)$b['days_left'] ?> 天过生日 = e((string)$b['date']) ?> = e($w) ?> 农历= e((string)$b['lunar_label']) ?> = $hasRel ? '我的家人' : '家庭成员' ?> 我的家谱 补充亲属关系 先把家人连起来 目前还没有任何亲属关系,所以下面显示的是整个名册。 到自己的资料页填上「谁是我的父母、配偶、子女」,之后这一页就只显示跟你有关的人, 每个人的称呼也会按你的视角来算。 开始连关系 名册还是空的 先把家里人加进来,之后他们就能出现在每一条记录里。 添加成员 = e($pshow) ?> 我 待确认 = e($p['label']) ?> 管理员'; } elseif ($role === 'guest') { echo '访客'; } elseif (!empty($p['account_id'])) { echo '已开通'; } $age = age_from(\App\Birthday::solarOf($p)); if ($age !== null) { echo ' · ' . (int)$age . ' 岁'; } ?>
= e($motto) ?> 我的一句话