39 lines
999 B
Plaintext
39 lines
999 B
Plaintext
---
|
|
import { BLOG } from '~/config.mjs';
|
|
|
|
import Layout from '~/layouts/PageLayout.astro';
|
|
import SinglePost from '~/components/blog/SinglePost.astro';
|
|
import ToBlogLink from '~/components/blog/ToBlogLink.astro';
|
|
|
|
import { getCanonical, getPermalink } from '~/utils/permalinks';
|
|
import { fetchPosts } from '~/utils/blog';
|
|
import { findImage } from '~/utils/images';
|
|
|
|
export async function getStaticPaths() {
|
|
if (BLOG?.disabled || BLOG?.post?.disabled) return [];
|
|
return (await fetchPosts()).map((post) => ({
|
|
params: {
|
|
blog: post.permalink,
|
|
},
|
|
props: { post },
|
|
}));
|
|
}
|
|
|
|
const { post } = Astro.props;
|
|
const url = getCanonical(getPermalink(post.permalink, 'post'));
|
|
|
|
const meta = {
|
|
title: post.title,
|
|
description: post.description,
|
|
canonical: post.canonical || url,
|
|
image: await findImage(post.image),
|
|
noindex: BLOG?.post?.noindex,
|
|
ogType: 'article',
|
|
};
|
|
---
|
|
|
|
<Layout {meta}>
|
|
<SinglePost post={{ ...post, image: meta.image }} url={url} />
|
|
<ToBlogLink />
|
|
</Layout>
|