diff --git a/website/src/content.config.ts b/website/src/content.config.ts index 133e56c..717b2f0 100644 --- a/website/src/content.config.ts +++ b/website/src/content.config.ts @@ -1,11 +1,44 @@ -import { glob } from "astro/loaders"; import { defineCollection } from "astro:content"; import { z } from "astro/zod"; +import { extendedGlob } from "./loaders/extended-glob"; + const blog = defineCollection({ - loader: glob({ + loader: extendedGlob({ pattern: "**/*.(md|mdx|gmi|html)", base: "./src/content/blog", + postprocessSlug: (slug: string) => slug.replaceAll(/^gemlog\//g, ""), + ignore: [ + "gemlog/index.gmi", + /* Some blog posts were ported to gemtext. Don't port them back again: + * that would lead to duplicates! The originals are likely to be better + * anyway, as MD/MDX are richer languages. */ + "**/2024-01-14.gmi", + "**/2024-01-29.gmi", + "**/2024-03-30.gmi", + "**/2024-04-10.gmi", + "**/2024-04-11.gmi", + "**/2024-04-14.gmi", + "**/2024-05-02.gmi", + "**/2024-06-13.gmi", + "**/2024-07-08.gmi", + "**/2024-07-16.gmi", + "**/2024-12-17.gmi", + "**/2025-01-19.gmi", + "**/2025-01-24.gmi", + "**/2025-01-28.gmi", + "**/2025-05-02.gmi", + "**/2025-05-04.gmi", + "**/2025-06-23.gmi", + "**/2025-07-03.gmi", + "**/2025-09-18.gmi", + "**/2025-09-24.gmi", + "**/2025-10-05.gmi", + "**/2025-10-09.gmi", + "**/2025-12-11.gmi", + "**/2026-02-16.gmi", + "**/2026-03-04.gmi", + ], }), schema: z.object({ title: z.string(), diff --git a/website/src/content/blog/gemlog b/website/src/content/blog/gemlog new file mode 120000 index 0000000..61e38eb --- /dev/null +++ b/website/src/content/blog/gemlog @@ -0,0 +1 @@ +../../../../capsule/content/gemlog/ \ No newline at end of file diff --git a/website/src/pages/blog/[...slug].astro b/website/src/pages/blog/[...slug].astro index f5d9763..a4168b6 100644 --- a/website/src/pages/blog/[...slug].astro +++ b/website/src/pages/blog/[...slug].astro @@ -49,7 +49,7 @@ const GemtextHTMLRenderer: Gemtext.Renderer = { const post = Astro.props; const Content = post.filePath?.endsWith('.gmi') - ? Gemtext.parse(post.body ?? '').generate(GemtextHTMLRenderer) + ? Gemtext.parse((post.body ?? '').replace(`# ${post.data.title}`, '')).generate(GemtextHTMLRenderer) : (await render(post)).Content; ---