summaryrefslogtreecommitdiff
path: root/examples/with-content/src/pages/blog
diff options
context:
space:
mode:
Diffstat (limited to 'examples/with-content/src/pages/blog')
-rw-r--r--examples/with-content/src/pages/blog/[...slug].astro21
-rw-r--r--examples/with-content/src/pages/blog/index.astro57
2 files changed, 78 insertions, 0 deletions
diff --git a/examples/with-content/src/pages/blog/[...slug].astro b/examples/with-content/src/pages/blog/[...slug].astro
new file mode 100644
index 000000000..c8e86c487
--- /dev/null
+++ b/examples/with-content/src/pages/blog/[...slug].astro
@@ -0,0 +1,21 @@
+---
+import { CollectionEntry, getCollection } from "astro:content";
+import BlogPost from "../../layouts/BlogPost.astro";
+
+export async function getStaticPaths() {
+ const posts = await getCollection('blog');
+ return posts.map(post => ({
+ params: { slug: post.slug },
+ props: post,
+ }));
+}
+type Props = CollectionEntry<'blog'>;
+
+const post = Astro.props;
+const { Content } = await post.render();
+---
+
+<BlogPost {...post.data}>
+ <h1>{post.data.title}</h1>
+ <Content />
+</BlogPost>
diff --git a/examples/with-content/src/pages/blog/index.astro b/examples/with-content/src/pages/blog/index.astro
new file mode 100644
index 000000000..e4f769f8a
--- /dev/null
+++ b/examples/with-content/src/pages/blog/index.astro
@@ -0,0 +1,57 @@
+---
+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';
+
+const posts = (await getCollection('blog')).sort(
+ (a, b) => a.data.pubDate.valueOf() - b.data.pubDate.valueOf()
+)
+---
+
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <BaseHead title={SITE_TITLE} description={SITE_DESCRIPTION} />
+ <style>
+ ul {
+ list-style-type: none;
+ padding: unset;
+ }
+ ul li {
+ display: flex;
+ }
+ ul li time {
+ flex: 0 0 130px;
+ font-style: italic;
+ color: #595959;
+ }
+ ul li a:visited {
+ color: #8e32dc;
+ }
+ </style>
+ </head>
+ <body>
+ <Header />
+ <main>
+ <section>
+ <ul>
+ {posts.map((post) => (
+ <li>
+ <time datetime={post.data.pubDate.toISOString()}>
+ {post.data.pubDate.toLocaleDateString('en-us', {
+ year: 'numeric',
+ month: 'short',
+ day: 'numeric',
+ })}
+ </time>
+ <a href={'/blog/' + post.slug}>{post.data.title}</a>
+ </li>
+ ))}
+ </ul>
+ </section>
+ </main>
+ <Footer />
+ </body>
+</html>