Added a limit parameter with a value of Infinity to the getContentItems calls for 'posts' and 'documentation' collections. This ensures all items are retrieved without any restrictions.
65 lines
1.4 KiB
TypeScript
65 lines
1.4 KiB
TypeScript
import { getServerSideSitemap } from 'next-sitemap';
|
|
|
|
import { createCmsClient } from '@kit/cms';
|
|
|
|
import appConfig from '~/config/app.config';
|
|
|
|
export async function GET() {
|
|
const paths = getPaths();
|
|
const contentItems = await getContentItems();
|
|
|
|
return getServerSideSitemap([
|
|
...paths,
|
|
...contentItems.map((path) => {
|
|
return {
|
|
loc: new URL(path, appConfig.url).href,
|
|
lastmod: new Date().toISOString(),
|
|
};
|
|
}),
|
|
]);
|
|
}
|
|
|
|
function getPaths() {
|
|
const paths = [
|
|
'/',
|
|
'/faq',
|
|
'/blog',
|
|
'/docs',
|
|
'/pricing',
|
|
'/contact',
|
|
'/cookie-policy',
|
|
'/terms-of-service',
|
|
'/privacy-policy',
|
|
// add more paths here
|
|
];
|
|
|
|
return paths.map((path) => {
|
|
return {
|
|
loc: new URL(path, appConfig.url).href,
|
|
lastmod: new Date().toISOString(),
|
|
};
|
|
});
|
|
}
|
|
|
|
async function getContentItems() {
|
|
const client = await createCmsClient();
|
|
|
|
const posts = client
|
|
.getContentItems({
|
|
collection: 'posts',
|
|
limit: Infinity,
|
|
})
|
|
.then((response) => response.items)
|
|
.then((posts) => posts.map((post) => `/blog/${post.slug}`));
|
|
|
|
const docs = client
|
|
.getContentItems({
|
|
collection: 'documentation',
|
|
limit: Infinity,
|
|
})
|
|
.then((response) => response.items)
|
|
.then((docs) => docs.map((doc) => `/docs/${doc.slug}`));
|
|
|
|
return Promise.all([posts, docs]).then((items) => items.flat());
|
|
}
|