feat: drafts frontmatter & exclude drafts from production
This commit is contained in:
parent
bfd3bef223
commit
ca28bd2d36
12 changed files with 34 additions and 11 deletions
|
@ -4,6 +4,7 @@ import { z, reference } from 'astro:content';
|
|||
export const posts = ({ image }) => z.object({
|
||||
title: z.string(),
|
||||
description: z.string().optional(),
|
||||
draft: z.boolean().optional().default(false),
|
||||
summary: z.string().optional(),
|
||||
date: z.coerce.date(),
|
||||
categories: z.union([z.array(z.string()), z.string()]).transform(val => Array.isArray(val) ? val : [val]).default(['uncategorized']),
|
||||
|
|
|
@ -9,7 +9,9 @@ import { getLangFromUrl, useTranslations, useTranslatedPath } from '../i18n/util
|
|||
const lang = getLangFromUrl(Astro.url);
|
||||
const t = useTranslations(lang);
|
||||
const translatePath = useTranslatedPath(lang);
|
||||
const posts = await getCollection('posts');
|
||||
const posts = await getCollection('posts', ({ data }) => {
|
||||
return import.meta.env.PROD ? data.draft !== true : true;
|
||||
});
|
||||
posts.sort((a, b) => new Date(b.data.date).getTime() - new Date(a.data.date).getTime());
|
||||
---
|
||||
|
||||
|
|
|
@ -17,7 +17,9 @@ const t = useTranslations(lang);
|
|||
const translatePath = useTranslatedPath(lang);
|
||||
|
||||
export async function getStaticPaths() {
|
||||
const blogEntries = await getCollection('posts');
|
||||
const blogEntries = await getCollection('posts', ({ data }) => {
|
||||
return import.meta.env.PROD ? data.draft !== true : true;
|
||||
});
|
||||
return blogEntries.map(entry => ({
|
||||
params: { slug: entry.slug }, props: { entry },
|
||||
}));
|
||||
|
|
|
@ -2,7 +2,9 @@ import { getCollection } from 'astro:content';
|
|||
|
||||
export const prerender = true;
|
||||
export async function getStaticPaths() {
|
||||
const blogEntries = await getCollection('posts');
|
||||
const blogEntries = await getCollection('posts', ({ data }) => {
|
||||
return import.meta.env.PROD ? data.draft !== true : true;
|
||||
});
|
||||
return blogEntries.map(entry => ({
|
||||
params: { slug: entry.slug }, props: { entry },
|
||||
}));
|
||||
|
|
|
@ -62,7 +62,9 @@ const fileCache = {
|
|||
};
|
||||
|
||||
export async function getStaticPaths() {
|
||||
const blogEntries = await getCollection('posts');
|
||||
const blogEntries = await getCollection('posts', ({ data }) => {
|
||||
return import.meta.env.PROD ? data.draft !== true : true;
|
||||
});
|
||||
return blogEntries.map(post => ({
|
||||
params: { slug: post.slug }, props: { post },
|
||||
}));
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
---
|
||||
import {getCollection} from "astro:content";
|
||||
import Layout from "../layouts/Layout.astro";
|
||||
const allPosts = await getCollection('posts');
|
||||
const allPosts = await getCollection('posts', ({ data }) => {
|
||||
return import.meta.env.PROD ? data.draft !== true : true;
|
||||
});
|
||||
const uniqueCategories = [...new Set(allPosts.map((post: any) => post.data.categories ? post.data.categories : []).flat())];
|
||||
---
|
||||
<Layout title="Categoies" description="List all categories used in the blog posts.">
|
||||
|
|
|
@ -4,7 +4,9 @@ import {getCollection} from "astro:content";
|
|||
import ArticleList from "../../components/ArticleList.astro";
|
||||
|
||||
export async function getStaticPaths() {
|
||||
const allPosts = await getCollection('posts');
|
||||
const allPosts = await getCollection('posts', ({ data }) => {
|
||||
return import.meta.env.PROD ? data.draft !== true : true;
|
||||
});
|
||||
// Get all categories, ensuring the default 'uncategorized' is used when categories is undefined
|
||||
const uniqueCategories = [...new Set(allPosts.map((post: any) =>
|
||||
post.data.categories || ['uncategorized']).flat())];
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
import { getCollection } from 'astro:content';
|
||||
|
||||
export async function GET() {
|
||||
const posts = await getCollection('posts');
|
||||
const posts = await getCollection('posts', ({ data }) => {
|
||||
return import.meta.env.PROD ? data.draft !== true : true;
|
||||
});
|
||||
const searchIndex = posts.map(post => ({
|
||||
title: post.data.title,
|
||||
description: post.data.description || '',
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
---
|
||||
import {getCollection} from "astro:content";
|
||||
import Layout from "../layouts/Layout.astro";
|
||||
const allPosts = await getCollection('posts');
|
||||
const allPosts = await getCollection('posts', ({ data }) => {
|
||||
return import.meta.env.PROD ? data.draft !== true : true;
|
||||
});
|
||||
const uniqueTags = [...new Set(allPosts.map((post: any) => post.data.tags ? post.data.tags : []).flat())];
|
||||
---
|
||||
<Layout title="Tags" description="List all tags used in the blog posts.">
|
||||
|
|
|
@ -4,7 +4,9 @@ import {getCollection} from "astro:content";
|
|||
import ArticleList from "../../components/ArticleList.astro";
|
||||
|
||||
export async function getStaticPaths() {
|
||||
const allPosts = await getCollection('posts');
|
||||
const allPosts = await getCollection('posts', ({ data }) => {
|
||||
return import.meta.env.PROD ? data.draft !== true : true;
|
||||
});
|
||||
const uniqueTags = [...new Set(allPosts.map((post: any) => post.data.tags ? post.data.tags : []).flat())];
|
||||
return uniqueTags.map((tag) => {
|
||||
const filteredPosts = allPosts.filter((post: any) => post.data.tags?.includes(tag));
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
import { getCollection } from 'astro:content';
|
||||
|
||||
export async function GET(context) {
|
||||
const posts = await getCollection('posts');
|
||||
const posts = await getCollection('posts', ({ data }) => {
|
||||
return import.meta.env.PROD ? data.draft !== true : true;
|
||||
});
|
||||
// Sort posts by date (newest first)
|
||||
posts.sort((a, b) => new Date(b.data.date).getTime() - new Date(a.data.date).getTime());
|
||||
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
import { getCollection, render } from 'astro:content';
|
||||
|
||||
async function fetchPostsData() {
|
||||
const posts = await getCollection('posts');
|
||||
const posts = await getCollection('posts', ({ data }) => {
|
||||
return import.meta.env.PROD ? data.draft !== true : true;
|
||||
});
|
||||
const entriesData = {};
|
||||
|
||||
for (const post of posts) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue