diff options
Diffstat (limited to 'examples/with-content/src/pages/blog')
-rw-r--r-- | examples/with-content/src/pages/blog/[...slug].astro | 21 | ||||
-rw-r--r-- | examples/with-content/src/pages/blog/index.astro | 57 |
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> |