From 1e11512b21a3742f835886621aa7411bdeea2481 Mon Sep 17 00:00:00 2001 From: trivernis Date: Sat, 6 Jul 2024 17:15:34 +0200 Subject: [PATCH] Add blog post view --- src/global.scss | 4 +++ src/lib/cms/blog.ts | 36 ++++++++++++++++++++++++++ src/routes/+layout.svelte | 29 ++++++++++++++------- src/routes/blog/+page.server.ts | 1 + src/routes/blog/+page.svelte | 2 +- src/routes/blog/[slug]/+page.server.ts | 26 +++++++++++++++++++ src/routes/blog/[slug]/+page.svelte | 12 +++++++++ 7 files changed, 100 insertions(+), 10 deletions(-) create mode 100644 src/routes/blog/[slug]/+page.server.ts diff --git a/src/global.scss b/src/global.scss index 001ea82..3abddf3 100644 --- a/src/global.scss +++ b/src/global.scss @@ -17,6 +17,10 @@ } } + .page { + position: relative; + } + .flex-row { display: flex; flex-direction: row; diff --git a/src/lib/cms/blog.ts b/src/lib/cms/blog.ts index 5905732..00e7097 100644 --- a/src/lib/cms/blog.ts +++ b/src/lib/cms/blog.ts @@ -23,6 +23,12 @@ export type BlogPostTeaser = { }; }; +export type BlogPost = BlogPostTeaser & { + attributes: { + content: any; + }; +}; + export async function getPosts(locale = "all"): Promise { return await fetchApi({ endpoint: "blog-posts", @@ -46,3 +52,33 @@ export async function getPosts(locale = "all"): Promise { }, }); } + +export async function getPost(slug: string): Promise { + return await fetchApi({ + endpoint: "blog-posts", + wrappedByKey: "data", + wrappedByList: true, + query: { + populate: { + author: { + populate: ["slug", "name"], + }, + collection: { + populate: ["slug", "name"], + }, + tags: { + populate: ["slug", "name"], + }, + teaserImage: { + populate: "*", + }, + }, + filters: { + slug: { + $eq: slug, + }, + }, + locale: "all", + }, + }); +} diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 4866a02..f1eb555 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,15 +1,17 @@ -
-
- -
-