GoLang client library & SDK for Payload CMS
This plugin provides an automatic way of syncing your Payload collections into a generated Sitemap.
- ✅ Generates XML Sitemaps directly from your Payload collections.
- ✅ Configurable cache system and endpoint to regenerate the sitemap.
- ✅ Extensible with fields and config.
- ✅ Add custom routes to your sitemap.
pnpm i payload-sitemap-plugin import { sitemapPlugin } from 'payload-sitemap-plugin';
export default buildConfig({
plugins: [
sitemapPlugin({
hostname: 'https://example.com',
cache: true,
defaultPriority: 0.5,
includeDrafts: true,
includeHomepage: true,
collections: {
posts: {
priority: 0.8,
changeFreq: 'weekly',
includeDrafts: false,
fieldOverrides: ({ defaultFields }) => [
...defaultFields,
{
name: 'customSEO',
type: 'text',
label: 'Custom SEO Field',
},
],
},
pages: true
},
generateURL: ({ doc }) => `/${doc.slug}`,
customRoutes: [
{
loc: '/about',
priority: 0.7,
lastMod: new Date('2024-01-01')
}
],
globalOverrides: {
fields: ({ defaultFields }) => [
...defaultFields,
{
name: 'extraSetting',
type: 'text',
label: 'Extra Setting',
},
],
},
})
]
});To make sure search engines are able to find the sitemap XML create a robots.txt file in the front-end of your website
and add the following line:
Sitemap: https://your-payload-domain.com/api/plugin-sitemap/sitemap/index.xml
Read more about the robots.txt
file here.
Two fields are added to the collections that are specified enabling easy customisation of each document in the sitemap.
excludeFromSitemap- A checkbox field to specify whether a document should be excluded from the sitemap.sitemapPriority- A select field to define the priority of a document in the sitemap, with values ranging from 0 to 1.
If caching is enabled, a sitemap global is used to store the results of sitemap generation once it has been created.
This global contains a JSON representation of the sitemap, and when it was last modified.
The user is responsible for re-generating sitemaps. Refer to the regenerate endpoint below for instructions on how to manually trigger sitemap regeneration.
Visit the documentation for more details.
| Endpoint | Description | Method |
|---|---|---|
/api/plugin-sitemap/sitemap/index.xml |
The generated sitemap XML file. | GET |
/api/plugin-sitemap/regenerate |
Endpoint to regenerate the sitemap. | POST |
| Option | Default | Description |
|---|---|---|
hostname |
Required | Base URL for absolute links. This is required for generating fully qualified URLs in the sitemap. |
cache |
false |
Cache configuration for the sitemap. Can be a boolean (enable/disable) or an object with duration and enabled flags. |
cache.duration |
86400 (1 day) |
Cache duration in seconds for storing the generated sitemap. |
cache.enabled |
false |
If true, caching of the generated sitemap will be enabled. |
collections |
{} |
Collection-specific configuration for the sitemap. Each key corresponds to a collection slug, and custom options can be provided for that collection. |
collections.[key] |
- | Settings for a specific collection in the sitemap. If set to true, it includes all documents in that collection with default settings. |
collections.[key].changeFreq |
- | Frequency at which pages in this collection are expected to change. Can be overridden for each document. |
collections.[key].includeDrafts |
false |
If true, drafts for this collection will be included in the sitemap. |
collections.[key].lastModField |
- | Custom field to determine the last modified date (lastmod) for documents in the collection. |
collections.[key].priority |
- | Default priority for documents in this collection. Can be between 0.0 and 1.0. |
collections.[key].fieldOverrides |
- | Function to override or extend the default fields (sitemapPriority and excludeFromSitemap) for this collection. Returns a new array of fields. |
customRoutes |
- | Custom routes to include in the sitemap with their own configuration (change frequency, last modified date, priority). |
defaultPriority |
0.5 |
Default priority for all documents in the sitemap. Values range from 0.0 (lowest) to 1.0 (highest). |
disabled |
false |
If set to true, disables the sitemap plugin. |
generateURL |
- | Custom function to generate URLs for documents in this collection. |
includeDrafts |
false |
If true, includes drafts in the sitemap. This is overridden by individual collection settings. |
includeHomepage |
true |
If true, includes a default / entry in the sitemap. |
globalOverrides |
true |
Function to override or extend fields on the sitemap global used for caching. Returns a new array of fields. |
- Add localisation, ability to specify alternate pages:
<xhtml:link rel="alternate"> - Allow
limitand sitemaps greater than 45,000.
Contributions are welcome! If you find any bugs or have suggestions for improvement, please open an issue or submit a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.
ainsley.dev and the ainsley.dev logo are either registered trademarks or trademarks of ainsley.dev LTD in the United Kingdom and/or other countries. All other trademarks are the property of their respective owners.
