fix(cms): getPages paginiert alle Seiten (Slug-Fallback fand Seiten jenseits per_page=50 nicht → 404)
This commit is contained in:
+23
-7
@@ -163,14 +163,30 @@ export async function fetchOpenApi(): Promise<OpenApiSpec> {
|
||||
export async function getPages(): Promise<PageEntry[]> {
|
||||
return cached("page", "page:list:", async () => {
|
||||
const base = getBaseUrl();
|
||||
const res = await cmsFetch(`${base}/api/content/page`);
|
||||
if (!res.ok) {
|
||||
throw new Error(
|
||||
`RustyCMS list page failed: ${res.status}. Is the CMS running at ${base}?`,
|
||||
// Alle Seiten holen — CMS-Default-per_page ist 50, die Site hat aber mehr.
|
||||
// Ohne vollständige Liste scheitert der Slug→_slug-Fallback in
|
||||
// getPageBySlug für Seiten jenseits der ersten Page → 404.
|
||||
const PER_PAGE = 200;
|
||||
const all: PageEntry[] = [];
|
||||
let page = 1;
|
||||
let totalPages = 1;
|
||||
do {
|
||||
const res = await cmsFetch(
|
||||
`${base}/api/content/page?_per_page=${PER_PAGE}&_page=${page}`,
|
||||
);
|
||||
}
|
||||
const data = (await res.json()) as PageListResponse;
|
||||
return data.items ?? [];
|
||||
if (!res.ok) {
|
||||
throw new Error(
|
||||
`RustyCMS list page failed: ${res.status}. Is the CMS running at ${base}?`,
|
||||
);
|
||||
}
|
||||
const data = (await res.json()) as PageListResponse & {
|
||||
total_pages?: number;
|
||||
};
|
||||
all.push(...(data.items ?? []));
|
||||
totalPages = data.total_pages ?? 1;
|
||||
page += 1;
|
||||
} while (page <= totalPages);
|
||||
return all;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user