A sitemap is a structured list of pages that enables web crawlers to find the
pages of a site.
Options
Number of sitemap entries to fetch.
Starting id
cursor of the last sitemap entry fetched.
Only sitemap entries beginning with this
pathname will be
returned.
A valid locale string (ex. "en-US"
).
Return type
type Sitemap = {
id: string;
loc: string;
lastmod?: string;
changefreq?:
| "always"
| "hourly"
| "daily"
| "weekly"
| "monthly"
| "yearly"
| "never";
priority?: number;
alternateRefs?: {
hreflang: string;
href: string;
}[];
}[];
Examples
Using next-sitemap
The following example uses getSitemap
with next-sitemap
, a popular Next.js library for generating sitemaps.
import { Makeswift } from "@makeswift/runtime/next";
// Use `getServerSideSitemapLegacy` for sitemap entries in the pages directory.
import { getServerSideSitemapLegacy } from "next-sitemap";
import { client } from "makeswift/client";
import { runtime } from "makeswift/runtime";
import "makeswift/components";
export async function getServerSideProps(context) {
const sitemap = await client.getSitemap();
return getServerSideSitemapLegacy(context, sitemap);
}
export default function Sitemap() {}
Filtering by pathname
The following example uses the pathnamePrefix
option to filter results to only include pages with a pathname beginning with /blog/
.
import { Makeswift } from "@makeswift/runtime/next";
import { getServerSideSitemapLegacy } from "next-sitemap";
import { client } from "makeswift/client";
import { runtime } from "makeswift/runtime";
import "makeswift/components";
export async function getServerSideProps(context) {
const blogSitemap = await client.getSitemap({ pathnamePrefix: "/blog/" });
return getServerSideSitemapLegacy(context, blogSitemap);
}
export default function BlogSitemap() {}
The following example uses the limit
and after
field to paginate the results of getSitemap
10 entries at a time.
import { Makeswift, Sitemap } from "@makeswift/runtime/next";
import { getServerSideSitemapLegacy } from "next-sitemap";
import { client } from "makeswift/client";
import { runtime } from "makeswift/runtime";
import "makeswift/components";
export async function getServerSideProps(context) {
const sitemap: Sitemap = [];
let page: Sitemap = [];
let after: string | undefined = undefined;
do {
page = await client.getSitemap({ limit: 10, after });
sitemap.push(...page);
after = page.at(-1)?.id;
} while (page.length > 0);
return getServerSideSitemapLegacy(context, sitemap);
}
export default function Sitemap() {}
Localization
The following example uses the locale
option to fetch the sitemap for a specific locale.
import { Makeswift } from "@makeswift/runtime/next";
import { getServerSideSitemapLegacy } from "next-sitemap";
import { client } from "makeswift/client";
import { runtime } from "makeswift/runtime";
import "makeswift/components";
export async function getServerSideProps(context) {
const sitemap = await client.getSitemap({ locale: "es" });
return getServerSideSitemapLegacy(context, sitemap);
}
export default function Sitemap() {}
If a locale is using domain-based localization, passing the locale to getSitemap
will return the sitemap for that particular domain.
For example, if in the site settings there is an es
locale with a domain of foo.es
, then passing es
to getSitemap
will return the sitemap for foo.es
.
Changelog
Version | Changes |
---|
v0.11.2 | Added locale option to getSitemap |
v0.10.7 | Released getSitemap |