置顶(T1):
- src/lib/post-order.ts 新增 sortPosts:置顶优先 → pubDate 倒序 → id 兜底,
把首页双轨/归档/书架四处排序口径收敛到一处
- postsSchema 增 pinned;PostList 三处渲染路径加灰阶 pin 小徽标;后台置顶开关
- 语义边界:只影响列表顺序,不改 pubDate/URL/RSS 时间语义
计数徽标(T4 契约组件):
- src/components/geek/ViewMeta.astro:眼睛 = 浏览数、气泡 = 评论数,
本地 SVG + tokens 着色,不引第三方图片
- 数据只用 Artalk 匿名端点:GET comments?limit=1 一次拿到 count 与 page.pv;
page 模式先 POST pages/pv 计一次浏览,readonly 模式零写入
- SSR 占位「–」:无 JS/接口失败不显示 0 误导读者
验证: pnpm astro build 48 页 exit 0;config-check 208 字段/65 hint 全过;
sortPosts 四调用点替换后构建通过
Spec: 2026-11-02_blog-5h-content-social (T1 契约)
Co-authored-by: GLM-5.3
19 lines
649 B
Plaintext
19 lines
649 B
Plaintext
---
|
|
// /en/archives/ 列表页(补缺:此前 404)
|
|
import { getCollection } from 'astro:content';
|
|
import BaseLayout from '../../../layouts/BaseLayout.astro';
|
|
import PostList from '../../../components/PostList.astro';
|
|
import { sortPosts } from '../../../lib/post-order';
|
|
|
|
const posts = sortPosts(
|
|
await getCollection('posts', ({ data }) => !data.draft && !data.tags.includes('hidden')),
|
|
);
|
|
const enTitle = Object.fromEntries(
|
|
(await getCollection('postsEn')).map((e) => [e.id, e.data.title]),
|
|
);
|
|
---
|
|
|
|
<BaseLayout title="Posts · wait4x" description="All posts">
|
|
<PostList {posts} locale="en" titleOverrides={enTitle} fold />
|
|
</BaseLayout>
|