diff --git a/astro/src/pages/sitemap/blogs.xml.ts b/astro/src/pages/sitemap/blogs.xml.ts index dfe8f4e..3eae4fb 100644 --- a/astro/src/pages/sitemap/blogs.xml.ts +++ b/astro/src/pages/sitemap/blogs.xml.ts @@ -21,9 +21,28 @@ export const GET = (async () => { let sitemaps: SitemapIndex[] = []; for (let i = 0; i < pages; i++) { + const selectedBlogs = blogs.slice( + ((Number(i + 1) - 1) * settings.sitemap.perPage), + Number(i + 1) * settings.sitemap.perPage - 1 + ); + + let dates = [ + settings.sitemap.lastModified, + settings.blog.lastModified, + settings.website.lastModified + ]; + + selectedBlogs.forEach((blog) => { + dates.push(blog.lastModified); + }); + + const lastModified = dates.sort((a: Date, b: Date) => { + return b.getTime() - a.getTime(); + }); + sitemaps.push({ url: `/sitemap/blogs-${i + 1}.xml`, - lastModified: new Date() + lastModified: lastModified[0] }); } diff --git a/astro/src/pages/sitemap/index.xml.ts b/astro/src/pages/sitemap/index.xml.ts index 3a6535c..e76b10b 100644 --- a/astro/src/pages/sitemap/index.xml.ts +++ b/astro/src/pages/sitemap/index.xml.ts @@ -1,3 +1,4 @@ +import { getAllBlogs } from "@/content/blogs/blogs"; import { getSettings } from "@/content/settings/settings"; import type { APIRoute } from "astro"; import minifyXML from "minify-xml"; @@ -13,9 +14,25 @@ export const GET = (async () => { ]; if (settings.blog.enabled) { + const blogLastModifieds = [ + settings.blog.lastModified, + settings.sitemap.lastModified, + settings.website.lastModified + ]; + + let blogs = await getAllBlogs(settings); + + blogs.forEach((blog) => { + blogLastModifieds.push(blog.lastModified); + }); + + const lastModifiedBlogs = blogLastModifieds.sort((a: Date, b: Date) => { + return b.getTime() - a.getTime(); + }); + sitemapIndex.push({ url: "/sitemap/blogs.xml", - lastModified: new Date() + lastModified: lastModifiedBlogs[0] }); }; if (settings.project.enabled) {