getSitemap

An instance method that provides SEO information about the pages created within Makeswift. You can combine the results of getSitemap with SEO information for your hardcoded pages to create a sitemap.

This method was deprecated in v0.19.0 and was removed in v0.25.0. 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
numberDefaults to 50

Number of sitemap entries to fetch.

after
string

Starting id cursor of the last sitemap entry fetched.

pathnamePrefix
stringDefaults to /

Only sitemap entries beginning with this pathname will be returned.

locale
string

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.

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