query('SELECT id, part, title, summary, pinned, sort, created_at, updated_at FROM articles WHERE enabled = 1 ORDER BY id ASC')->fetchAll(); $rows = []; $partOrder = []; $byPart = []; foreach ($all as $r) { $part = trim((string)$r['part']); if ($part === '') { $part = '未分类'; } if (!isset($byPart[$part])) { $byPart[$part] = []; $partOrder[] = $part; } $byPart[$part][] = $r; } foreach ($partOrder as $part) { $items = $byPart[$part]; usort($items, static function (array $a, array $b): int { if ((int)$a['pinned'] !== (int)$b['pinned']) { return (int)$b['pinned'] - (int)$a['pinned']; } if ((int)$a['sort'] !== (int)$b['sort']) { return (int)$a['sort'] <=> (int)$b['sort']; } return (int)$a['id'] <=> (int)$b['id']; }); $rows[] = ['part' => $part, 'articles' => $items]; } $total = count($all); // 从库首页“文章区”卡片进入阅读时(?from=nav),顶部返回按钮语义切换 $fromNav = (isset($_GET['from']) && (string)$_GET['from'] === 'nav'); // 当前阅读文章 $cur = null; $cid = (int)($_GET['id'] ?? 0); if ($cid > 0) { $st = $pdo->prepare('SELECT * FROM articles WHERE id = ? AND enabled = 1 LIMIT 1'); $st->execute([$cid]); $cur = $st->fetch(); if (!$cur) { $cur = null; // 无效或已隐藏:回退到列表 } } layout_head($cur ? (string)$cur['title'] : '文章库'); ?>

全部文章 (共 篇)

点击任意文章开始阅读;左侧「文章目录」可随时切换文章,中间「段落目录」可快速跳转。

文章库还没有内容,站长可在后台「文章管理」中发布