(string)$pid, 'data' => [ 'gender' => $gender, 'name' => (string)($p['name'] ?? ''), 'label' => \App\Kinship::label($graph, (int)$meId, $pid, $people), 'avatar' => avatar_url($p['avatar'] ?? null), 'me' => $pid === (int)$meId, 'ph' => (int)($p['is_placeholder'] ?? 0) === 1, ], 'rels' => [ 'parents' => $parents, 'spouses' => $spouses, 'children' => $kids, ], ]; } // ⚠️ 名字是用户自己输入的:拼 HTML 前必须转义,否则有人把名字填成一段「能提前闭合 // 脚本块」的标签,就能从脚本里逃出去、把整页结构打断。 // ⚠️ 这里**刻意不写出那个闭合标签的字面量** —— 静态检查(check_inline_js.py) // 是按原文找脚本块的,注释里写出来会被它当成真的脚本段去解析,报假错。 $datumJson = json_encode( $datum, JSON_UNESCAPED_UNICODE | JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT ); $canChart = count($datum) > 1; ?>

我的家谱

以我为中心 · 同代按长幼从左到右 · 夫妻并排 · 折线表示谁是谁的父母
还没连上任何亲属关系 到「」的资料页,把父母、配偶、子女填进去, 这张家谱就会自动长出来。兄弟姐妹不用单独填 —— 只要你们有同一对父母,就会自动认出来。

「待确认」= 只填了称呼、还没对应到真实的人(虚线卡片)。 图里画的是**本家血脉 + 各自的配偶**;配偶的父母(如岳父母)属姻亲,不在这张图上。 可以直接**拖拽平移**、**滚轮缩放**;点一下卡片进对应成员页。