In this article I will talk about how can we build static and dynamic sitemap url from single or multiple endpoint from API
First of all we have to install @nuxtjs/sitemap package by –
npm i @nuxtjs/sitemap
@nuxtjs/sitemap
Then in nuxt.config.js
we have to add this module by –
modules: [ //other modules.... '@nuxtjs/sitemap' ],
Here is the full code –
const axios = require('axios') export default{ ....... sitemap: [ { path: '/public/product/sitemap_index.xml', exclude: [ '/admin/**', '/admin', '/checkout', '/previous-order' ], routes: async () => { let { data } = await axios.get('https://www.openmediabd.com/api/product/') let product = data.results let watchPages = product.map((product) => { return{ url:`/${product.product_slug}`, changefreq:'daily', priority:0.8, lastmod: product.updated } }) let { data:data2 } = await axios.get('https://www.openmediabd.com/api/category/') let category = data2.data let watchPages2 = category.map((category) => { return{ url:`category/${category.title}`, changefreq:'daily', priority:0.9, lastmod: category.updated } }) return [{ url:'/', changefreq:'daily', priority:1, }, { url:'/login', changefreq:'weekly', priority:0.6, }, { url:'/register', changefreq:'weekly', priority:0.6, }, ...watchPages, ...watchPages2 ] }, }, ], }
Explanation
Here is the path where our xml
file will generate.
path: '/public/product/sitemap_index.xml',
those path will not include in our xml file.
exclude: [ '/admin/**', '/admin', '/checkout', '/previous-order' ],
And in my xml I want to generate url from 2 different async route. But you can also generate two different xml file for two routes.
routes: async () => { let { data } = await axios.get('https://www.openmediabd.com/api/product/') let product = data.results let watchPages = product.map((product) => { return{ url:`/${product.product_slug}`, changefreq:'daily', priority:0.8, lastmod: product.updated } }) let { data:data2 } = await axios.get('https://www.openmediabd.com/api/category/') let category = data2.data let watchPages2 = category.map((category) => { return{ url:`category/${category.title}`, changefreq:'daily', priority:0.9, lastmod: category.updated } })
And for static url we can do that by –
return [{ url:'/', changefreq:'daily', priority:1, }, { url:'/login', changefreq:'weekly', priority:0.6, }, { url:'/register', changefreq:'weekly', priority:0.6, }, ...watchPages, //dynamic routes along with static route ...watchPages2 ]
This guy is awesome, check that out 👉🏼
Thank you 👨🍳