This method has been deprecated and will be removed in a future runtime release. Use the getPages method to create a sitemap instead, see the documentation here.

A sitemap is a structured list of pages that enables web crawlers to find the pages of a site.

Options

limit
number
default: 50

Number of sitemap entries to fetch.

after
string

Starting id cursor of the last sitemap entry fetched.

pathnamePrefix
string
default: "/"

Only sitemap entries beginning with this pathname will be returned.

locale
string

Site locale to fetch. Introduced in v0.11.2

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.

pages/sitemap.xml.ts
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/.

pages/sitemap.xml.ts
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() {}

Using pagination

The following example uses the limit and after field to paginate the results of getSitemap 10 entries at a time.

pages/sitemap.xml.ts
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.

pages/sitemap.xml.ts
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

VersionChanges
v0.11.2Added locale option to getSitemap
v0.10.7Released getSitemap