From 8c425f89c86c0c17ffb4b46d8072d7778fd887c2 Mon Sep 17 00:00:00 2001 From: matthieu42morin Date: Sun, 28 Apr 2024 01:23:33 +0200 Subject: [PATCH] Individual blogPosts - Server + page + Layout --- src/lib/components/blog/Post.svelte | 3 + src/lib/components/blog/PostLayout.svelte | 100 ++++++++++++---------- src/routes/blog/[slug]/+page.svelte | 16 ++-- src/routes/blog/[slug]/+page.ts | 27 +++--- 4 files changed, 77 insertions(+), 69 deletions(-) create mode 100644 src/lib/components/blog/Post.svelte diff --git a/src/lib/components/blog/Post.svelte b/src/lib/components/blog/Post.svelte new file mode 100644 index 0000000..5af2d4b --- /dev/null +++ b/src/lib/components/blog/Post.svelte @@ -0,0 +1,3 @@ +
+ +
diff --git a/src/lib/components/blog/PostLayout.svelte b/src/lib/components/blog/PostLayout.svelte index 4391a0c..223cab5 100644 --- a/src/lib/components/blog/PostLayout.svelte +++ b/src/lib/components/blog/PostLayout.svelte @@ -1,63 +1,69 @@ - - {title} - - - - - - - - - {#each tags as tag (tag)} - - {/each} - + -
-
+
+
{`${title}`}
-
- {#if tags && tags.length > 0} -
- tags: {#each tags as tag} - - {tag} - - {/each} -
- {/if} - On {formatDate(date)} -
-
-

{title}

-
+ +
+

{post.title}

+

-
+ + + diff --git a/src/routes/blog/[slug]/+page.svelte b/src/routes/blog/[slug]/+page.svelte index 9eb2451..bc43b99 100644 --- a/src/routes/blog/[slug]/+page.svelte +++ b/src/routes/blog/[slug]/+page.svelte @@ -1,16 +1,10 @@ - - - - - + + + diff --git a/src/routes/blog/[slug]/+page.ts b/src/routes/blog/[slug]/+page.ts index 1472be1..9aa1bd2 100644 --- a/src/routes/blog/[slug]/+page.ts +++ b/src/routes/blog/[slug]/+page.ts @@ -1,14 +1,19 @@ -import { getPost, listPosts } from '$content/blog'; -import type { PageLoad } from './$types'; +import type { PageServerLoad } from './$types'; -export const entries = async () => { - const posts = await listPosts(); - return posts - .filter((post) => post.slug !== undefined) - .map((post) => ({ slug: post.slug as string })); -}; +import { error } from '@sveltejs/kit'; -export const load: PageLoad = async ({ params, parent }) => { - await parent(); - return await getPost(params.slug); +export const load: PageServerLoad = async ({ params }) => { + try { + const post = await import(`../../../content/blog/${params.slug}.md`); + + return { + content: post.default, + meta: post.metadata + }; + } catch (err) { + if (err.status === 404) { + error(404, `Could not find ${params.slug}`); + } + throw err; + } };