diff --git a/src/components/SocialList.astro b/src/components/SocialList.astro index c6b0e3a..048b9c1 100644 --- a/src/components/SocialList.astro +++ b/src/components/SocialList.astro @@ -27,6 +27,16 @@ const socialLinks: { link: "https://x.com/kazoottt", name: "mdi:twitter", }, + { + friendlyName: "Bilibili", + link: "https://space.bilibili.com/391236013", + name: "mdi:video", + }, + { + friendlyName: "YouTube", + link: "https://www.youtube.com/@kazoottt4718", + name: "mdi:youtube", + }, { friendlyName: "Photo", link: "https://unsplash.com/@kazoottt", @@ -35,7 +45,7 @@ const socialLinks: { { friendlyName: "汇总", link: "https://bento.me/KazooTTT", - name: "mdi:link", + name: "mdi:open-in-new", }, ]; --- diff --git a/src/components/blog/PostPreview.astro b/src/components/blog/PostPreview.astro index 3c0f561..41ef444 100644 --- a/src/components/blog/PostPreview.astro +++ b/src/components/blog/PostPreview.astro @@ -18,6 +18,7 @@ const { as: Tag = "div", post, withDesc = false } = Astro.props; {post.data.draft && (Draft) } + {post.data.fixedToTop && *} {post.data.title} diff --git a/src/content.config.ts b/src/content.config.ts index afe18cf..ff344f2 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -21,6 +21,7 @@ const post = defineCollection({ date_modified: z.date().optional(), data_created: z.date().optional(), category: z.string().optional().nullable(), + fixedToTop: z.boolean().optional().default(false), }), }); diff --git a/src/data/post.ts b/src/data/post.ts index c878a80..5f72bc1 100644 --- a/src/data/post.ts +++ b/src/data/post.ts @@ -8,6 +8,12 @@ export async function getAllPosts(): Promise[]> { }); } +export async function getAllFixedToTopPosts(): Promise[]> { + return await getCollection("post", ({ data }) => { + return import.meta.env.PROD ? data.fixedToTop : false; + }); +} + export async function getAllCollectionPosts() { const posts = await getAllPosts(); const notes = await getCollection("note"); diff --git a/src/pages/index.astro b/src/pages/index.astro index bd7b19c..bfb7de6 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -3,7 +3,7 @@ import { type CollectionEntry, getCollection } from "astro:content"; import SocialList from "@/components/SocialList.astro"; import PostPreview from "@/components/blog/PostPreview.astro"; import Note from "@/components/note/Note.astro"; -import { getAllPosts } from "@/data/post"; +import { getAllFixedToTopPosts, getAllPosts } from "@/data/post"; import PageLayout from "@/layouts/Base.astro"; import { collectionDateSort } from "@/utils/date"; @@ -14,6 +14,12 @@ const allPostsByDate = allPosts .sort(collectionDateSort) .slice(0, MAX_POSTS) as CollectionEntry<"post">[]; +// Fixed to top Posts +const allFixedToTopPosts = await getAllFixedToTopPosts(); +const allFixedToTopPostsByDate = allFixedToTopPosts + .sort(collectionDateSort) + .slice(0, MAX_POSTS) as CollectionEntry<"post">[]; + // Notes const MAX_NOTES = 6; const allNotes = await getCollection("note"); @@ -26,6 +32,20 @@ const latestNotes = allNotes.sort(collectionDateSort).slice(0, MAX_NOTES);

TODO ...

+ +
+

置顶文章

+
    + { + allFixedToTopPostsByDate.map((p) => ( +
  • + +
  • + )) + } +
+
+

Posts