aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2024-10-03 02:04:27 +0300
committerValentin Popov <valentin@popov.link>2024-10-03 02:04:27 +0300
commit2b5302587645dcab7c012c550989b7a8e9bee72b (patch)
treed0de8fc07cb6d0ec1c81657dcc9f0880a97c4d8b
parentd4eab1ff131c9342213f2dcc9b3c6383c7de41dd (diff)
downloadpopov.link-2b5302587645dcab7c012c550989b7a8e9bee72b.tar.xz
popov.link-2b5302587645dcab7c012c550989b7a8e9bee72b.zip
Update blog post metadata and styles
-rw-r--r--src/content/blog/example-content.md1
-rw-r--r--src/content/config.ts1
-rw-r--r--src/pages/[...page].astro5
-rw-r--r--src/pages/blog/[...slug].astro32
-rw-r--r--src/pages/feed.xml.js4
-rw-r--r--src/scss/_framework.scss3
6 files changed, 26 insertions, 20 deletions
diff --git a/src/content/blog/example-content.md b/src/content/blog/example-content.md
index 68b09e5..64b214e 100644
--- a/src/content/blog/example-content.md
+++ b/src/content/blog/example-content.md
@@ -3,6 +3,7 @@ title: "Example Content"
author: "Example User"
pubDate: "2018-01-01"
description: "Howdy! This is an example blog post that shows several types of HTML content supported in this theme."
+draft: true
---
Cum sociis natoque penatibus et magnis <a href="#">dis parturient montes</a>, nascetur ridiculus mus. _Aenean eu leo quam._ Pellentesque ornare sem lacinia quam venenatis vestibulum. Sed posuere consectetur est at lobortis. Cras mattis consectetur purus sit amet fermentum.
diff --git a/src/content/config.ts b/src/content/config.ts
index 00f60c9..245f20e 100644
--- a/src/content/config.ts
+++ b/src/content/config.ts
@@ -5,6 +5,7 @@ const blog = defineCollection({
schema: z.object({
author: z.string(),
description: z.string(),
+ draft: z.optional(z.boolean()),
pubDate: z.coerce.date(),
title: z.string(),
}),
diff --git a/src/pages/[...page].astro b/src/pages/[...page].astro
index cd64d66..6d513b2 100644
--- a/src/pages/[...page].astro
+++ b/src/pages/[...page].astro
@@ -8,7 +8,10 @@ import PostSummary from "../components/PostSummary.astro";
type Props = InferGetStaticPropsType<typeof getStaticPaths>;
export const getStaticPaths = (async ({ paginate }) => {
- const posts = await getCollection("blog");
+ const posts = await getCollection("blog", ({ data }) => {
+ return data.draft !== true;
+ });
+
posts.sort((a, b) => b.data.pubDate.getTime() - a.data.pubDate.getTime());
return paginate(posts, {
diff --git a/src/pages/blog/[...slug].astro b/src/pages/blog/[...slug].astro
index bcd5eed..63d2c98 100644
--- a/src/pages/blog/[...slug].astro
+++ b/src/pages/blog/[...slug].astro
@@ -2,11 +2,14 @@
import { type CollectionEntry, getCollection } from "astro:content";
import Comments from "../../components/Comments.astro";
import Layout from "../../layouts/BaseLayout.astro";
+import dayjs from "dayjs";
type Props = CollectionEntry<"blog">;
export async function getStaticPaths() {
- const posts = await getCollection("blog");
+ const posts = await getCollection("blog", ({ data }) => {
+ return data.draft !== true;
+ });
return posts.map((post) => ({
params: { slug: post.slug },
@@ -15,34 +18,31 @@ export async function getStaticPaths() {
}
const post = Astro.props;
-const { Content, remarkPluginFrontmatter } = await post.render();
+const { Content } = await post.render();
+const formattedDate = dayjs(post.data.pubDate.toString()).format("MMMM DD, YYYY");
---
-<style>
- .header {
- text-align: center;
- }
-</style>
-
<Layout description={post.data.description} title={post.data.title}>
<article>
- <section class="header">
+ <section>
<h1>{post.data.title}</h1>
+ </section>
+
+ <section>
+ <Content />
+ </section>
+
+ <section>
<p>
<small>
Posted
- <time datetime={post.data.pubDate.toISOString()}>{post.data.pubDate.toDateString()}</time>
- &nbsp;by&nbsp;{post.data.author}&nbsp;‐
- <strong>{remarkPluginFrontmatter.minutesRead}</strong>
+ <time datetime={post.data.pubDate.toISOString()}>{formattedDate}</time>
+ by&nbsp;{post.data.author}
</small>
</p>
</section>
<section>
- <Content />
- </section>
-
- <section>
<Comments />
</section>
</article>
diff --git a/src/pages/feed.xml.js b/src/pages/feed.xml.js
index c837202..d71a020 100644
--- a/src/pages/feed.xml.js
+++ b/src/pages/feed.xml.js
@@ -2,7 +2,9 @@ import { getCollection } from "astro:content";
import rss from "@astrojs/rss";
export async function GET(context) {
- const posts = await getCollection("blog");
+ const posts = await getCollection("blog", ({ data }) => {
+ return data.draft !== true;
+ });
return rss({
customData: `<language>ru-ru</language>`,
diff --git a/src/scss/_framework.scss b/src/scss/_framework.scss
index 549f9df..c95a71c 100644
--- a/src/scss/_framework.scss
+++ b/src/scss/_framework.scss
@@ -55,8 +55,7 @@ h5,
h6 {
font-weight: 700;
line-height: 1.1;
- margin-bottom: 1.5rem;
- margin-top: 3rem;
+ margin: 3rem 0;
overflow-wrap: break-word;
word-break: break-word;
word-wrap: break-word;