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 |