From 70625ce62aba43e586901d340ae81c2830d9fbc6 Mon Sep 17 00:00:00 2001 From: LarsVomMars Date: Thu, 26 Dec 2024 23:41:15 +0100 Subject: init --- src/pages/about.astro | 62 ++++++++++++++++ src/pages/blog/[event]/[...slug].astro | 50 +++++++++++++ src/pages/blog/[event]/index.astro | 126 +++++++++++++++++++++++++++++++++ src/pages/blog/index.astro | 120 +++++++++++++++++++++++++++++++ src/pages/index.astro | 50 +++++++++++++ src/pages/rss.xml.js | 16 +++++ 6 files changed, 424 insertions(+) create mode 100644 src/pages/about.astro create mode 100644 src/pages/blog/[event]/[...slug].astro create mode 100644 src/pages/blog/[event]/index.astro create mode 100644 src/pages/blog/index.astro create mode 100644 src/pages/index.astro create mode 100644 src/pages/rss.xml.js (limited to 'src/pages') diff --git a/src/pages/about.astro b/src/pages/about.astro new file mode 100644 index 0000000..c9d5b02 --- /dev/null +++ b/src/pages/about.astro @@ -0,0 +1,62 @@ +--- +import Layout from '../layouts/BlogPost.astro'; +--- + + +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut + labore et dolore magna aliqua. Vitae ultricies leo integer malesuada nunc vel risus commodo + viverra. Adipiscing enim eu turpis egestas pretium. Euismod elementum nisi quis eleifend quam + adipiscing. In hac habitasse platea dictumst vestibulum. Sagittis purus sit amet volutpat. Netus + et malesuada fames ac turpis egestas. Eget magna fermentum iaculis eu non diam phasellus + vestibulum lorem. Varius sit amet mattis vulputate enim. Habitasse platea dictumst quisque + sagittis. Integer quis auctor elit sed vulputate mi. Dictumst quisque sagittis purus sit amet. +

+ +

+ Morbi tristique senectus et netus. Id semper risus in hendrerit gravida rutrum quisque non + tellus. Habitasse platea dictumst quisque sagittis purus sit amet. Tellus molestie nunc non + blandit massa. Cursus vitae congue mauris rhoncus. Accumsan tortor posuere ac ut. Fringilla urna + porttitor rhoncus dolor. Elit ullamcorper dignissim cras tincidunt lobortis. In cursus turpis + massa tincidunt dui ut ornare lectus. Integer feugiat scelerisque varius morbi enim nunc. + Bibendum neque egestas congue quisque egestas diam. Cras ornare arcu dui vivamus arcu felis + bibendum. Dignissim suspendisse in est ante in nibh mauris. Sed tempus urna et pharetra pharetra + massa massa ultricies mi. +

+ +

+ Mollis nunc sed id semper risus in. Convallis a cras semper auctor neque. Diam sit amet nisl + suscipit. Lacus viverra vitae congue eu consequat ac felis donec. Egestas integer eget aliquet + nibh praesent tristique magna sit amet. Eget magna fermentum iaculis eu non diam. In vitae + turpis massa sed elementum. Tristique et egestas quis ipsum suspendisse ultrices. Eget lorem + dolor sed viverra ipsum. Vel turpis nunc eget lorem dolor sed viverra. Posuere ac ut consequat + semper viverra nam. Laoreet suspendisse interdum consectetur libero id faucibus. Diam phasellus + vestibulum lorem sed risus ultricies tristique. Rhoncus dolor purus non enim praesent elementum + facilisis. Ultrices tincidunt arcu non sodales neque. Tempus egestas sed sed risus pretium quam + vulputate. Viverra suspendisse potenti nullam ac tortor vitae purus faucibus ornare. Fringilla + urna porttitor rhoncus dolor purus non. Amet dictum sit amet justo donec enim. +

+ +

+ Mattis ullamcorper velit sed ullamcorper morbi tincidunt. Tortor posuere ac ut consequat semper + viverra. Tellus mauris a diam maecenas sed enim ut sem viverra. Venenatis urna cursus eget nunc + scelerisque viverra mauris in. Arcu ac tortor dignissim convallis aenean et tortor at. Curabitur + gravida arcu ac tortor dignissim convallis aenean et tortor. Egestas tellus rutrum tellus + pellentesque eu. Fusce ut placerat orci nulla pellentesque dignissim enim sit amet. Ut enim + blandit volutpat maecenas volutpat blandit aliquam etiam. Id donec ultrices tincidunt arcu. Id + cursus metus aliquam eleifend mi. +

+ +

+ Tempus quam pellentesque nec nam aliquam sem. Risus at ultrices mi tempus imperdiet. Id porta + nibh venenatis cras sed felis eget velit. Ipsum a arcu cursus vitae. Facilisis magna etiam + tempor orci eu lobortis elementum. Tincidunt dui ut ornare lectus sit. Quisque non tellus orci + ac. Blandit libero volutpat sed cras. Nec tincidunt praesent semper feugiat nibh sed pulvinar + proin gravida. Egestas integer eget aliquet nibh praesent tristique magna. +

+
diff --git a/src/pages/blog/[event]/[...slug].astro b/src/pages/blog/[event]/[...slug].astro new file mode 100644 index 0000000..2d7c495 --- /dev/null +++ b/src/pages/blog/[event]/[...slug].astro @@ -0,0 +1,50 @@ +--- +import { type CollectionEntry, getCollection } from "astro:content"; +import BlogPost from "../../../layouts/BlogPost.astro"; +import { render } from "astro:content"; +import { object } from "astro:schema"; + +export async function getStaticPaths() { + const posts = await getCollection("blog"); + const events = Object.keys( + Object.groupBy( + posts.map((post) => ({ + id: post.id, + event: post.id.split("/").at(-2) || "", + })), + (post) => post.event + ) + ).filter((event) => event); + + const postPaths = posts.map((post) => post.id.split("/").at(-1)); + console.log(postPaths); + + const paths = []; + for (const event of events) { + for (const post of postPaths) { + paths.push({ + params: { event, slug: post }, + props: { post: posts.find((p) => p.id.endsWith(post!!)) }, + }); + } + } + + return paths; + // return posts.map((post) => ({ + // params: { slug: post.id, event: post.id.split("/").at(-2) }, + // props: { post }, + // })); +} +// type Props = { +// post: CollectionEntry<"blog">; +// siblings: CollectionEntry<"blog">[]; +// }; +type Props = CollectionEntry<"blog">; + +const post = Astro.props; +const { Content } = await render(post.post); +--- + + + + diff --git a/src/pages/blog/[event]/index.astro b/src/pages/blog/[event]/index.astro new file mode 100644 index 0000000..5bab8f0 --- /dev/null +++ b/src/pages/blog/[event]/index.astro @@ -0,0 +1,126 @@ +--- +import BaseHead from "../../../components/BaseHead.astro"; +import Header from "../../../components/Header.astro"; +import Footer from "../../../components/Footer.astro"; +import { SITE_TITLE, SITE_DESCRIPTION } from "../../../consts"; +import { getCollection } from "astro:content"; +import FormattedDate from "../../../components/FormattedDate.astro"; + +export async function getStaticPaths() { + const blogs = await getCollection("blog"); + const events = Object.keys( + Object.groupBy( + blogs.map((b) => ({ + id: b.id, + event: b.id.split("/").at(-2) || "", + })), + (b) => b.event + ) + ); + console.log(events); + return events.filter((e) => e).map((event) => ({ params: { event } })); +} + +const event = Astro.params.event; + +const blogs = await getCollection("blog"); + +const posts = blogs + .filter((b) => b.id.includes(event + "/")) + .sort((a, b) => b.data.pubDate.valueOf() - a.data.pubDate.valueOf()); +--- + + + + + + + + +
+
+
+ +
+
+