holy shit i did it
This commit is contained in:
parent
f30a89cda0
commit
e38e2cec2b
@ -49,6 +49,7 @@ const chapters = defineCollection({
|
||||
notes: z.ostring().transform(notes => parser.renderInline(notes ?? "", {})),
|
||||
lastModified: z.coerce.date().optional(),
|
||||
sortOrder: z.number().default(1),
|
||||
// fic: reference("fics"),
|
||||
}),
|
||||
});
|
||||
|
||||
@ -85,6 +86,18 @@ const test = defineCollection({
|
||||
}
|
||||
})
|
||||
),
|
||||
schema: z.object({
|
||||
title: z.string(),
|
||||
series: z.union([z.string(), z.array(z.string())]),
|
||||
publishedAt: z.coerce.date(),
|
||||
summary: z.string().transform(summary => parser.renderInline(summary, {})),
|
||||
characters: z.array(z.string()).optional(),
|
||||
ships: z.ostring(),
|
||||
tags: z.array(z.string()).optional(),
|
||||
notes: z.ostring().transform(notes => parser.renderInline(notes ?? "", {})),
|
||||
lastModified: z.coerce.date().optional(),
|
||||
chapters: z.array(reference("chapters")).optional(),
|
||||
}),
|
||||
});
|
||||
|
||||
export const collections = { blog, fics, chapters, test };
|
@ -43,6 +43,7 @@ const links = [
|
||||
{lastModified}
|
||||
notes={chapter.data.notes}
|
||||
>
|
||||
{chapter.id}
|
||||
<Fragment slot="breadcrumbs">
|
||||
<Breadcrumbs id="breadcrumbs" customizeLinks={links} linkTextFormat="capitalized">
|
||||
<Fragment slot="separator" set:text="/" />
|
||||
@ -50,7 +51,6 @@ const links = [
|
||||
</Fragment>
|
||||
|
||||
<Content />
|
||||
|
||||
{chapters.length > 1 && (
|
||||
<nav id="chapter-pagination" slot="pagination">
|
||||
<div id="chapter-index">
|
||||
|
26
src/pages/test.astro
Normal file
26
src/pages/test.astro
Normal file
@ -0,0 +1,26 @@
|
||||
---
|
||||
import Layout from "@/layouts/Layout.astro";
|
||||
import { getEntries } from "astro:content";
|
||||
import { render } from "astro:content";
|
||||
import { getEntry } from "astro:content";
|
||||
import { getCollection } from "astro:content";
|
||||
|
||||
const fics = await getCollection("test");
|
||||
// console.log(fics);
|
||||
const entry = await getEntry("test", "test");
|
||||
// const chapter = await getEntry("chapters", "test/two");
|
||||
if (!entry) throw new Error("not found!");
|
||||
const chapters = await getEntries(entry.data.chapters!);
|
||||
// const { Content } = await render(entry);
|
||||
---
|
||||
<Layout>
|
||||
{fics.map(fic => (
|
||||
<article>
|
||||
<h2>{fic.data.title}</h2>
|
||||
{chapters.map(chapter => (
|
||||
<p>{JSON.stringify(chapter)}</p>
|
||||
))}
|
||||
{JSON.stringify(fic.data.chapters?.map(chapter => chapter))}
|
||||
</article>
|
||||
))}
|
||||
</Layout>
|
@ -2,16 +2,14 @@ import type { MarkdownInstance } from "astro";
|
||||
import { glob as astroGlob, type Loader, type LoaderContext } from "astro/loaders";
|
||||
import path from "path";
|
||||
import { glob } from "fs/promises";
|
||||
import { reference } from "astro:content";
|
||||
|
||||
async function getAllChapters(metaPath: string) {
|
||||
const entryPath = path.parse(metaPath);
|
||||
const fic = entryPath.dir;
|
||||
const entries = await Array.fromAsync(glob(fic + '/*.md'));
|
||||
const chapters = entries.map(chapter => path.relative(fic, chapter));
|
||||
return chapters.map(chapter => ({
|
||||
relativePath: chapter,
|
||||
chapter: path.resolve(fic, chapter),
|
||||
}));
|
||||
return chapters.map(chapter => `${fic.split("/").at(-1)}/${path.parse(chapter).name}`);
|
||||
}
|
||||
|
||||
export function ficsLoader(loader: Loader) {
|
||||
@ -39,7 +37,7 @@ export function ficsLoader(loader: Loader) {
|
||||
const search = import.meta.glob(`../content/fics/**/*.md`, { eager: true });
|
||||
let body;
|
||||
for (const path in search) {
|
||||
if (path.includes(chapters[0].relativePath)) {
|
||||
if (path.includes(chapters[0])) {
|
||||
body = search[path] as MarkdownInstance<any>;
|
||||
context.store.set({
|
||||
...valueWithoutDigest,
|
||||
|
Loading…
x
Reference in New Issue
Block a user