diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-04-08 10:12:31 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-04-08 10:12:31 +0700 |
| commit | 0ca62faf89775496320025c170c942b2cb3e1a20 (patch) | |
| tree | 4107119c58e82aedf3478c165741824ff9cd08c1 /src/pages/sitemap/products.xml.js | |
| parent | e7383ff9601e47953c732fccf093e19993ec37cd (diff) | |
update theme color
Diffstat (limited to 'src/pages/sitemap/products.xml.js')
| -rw-r--r-- | src/pages/sitemap/products.xml.js | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/pages/sitemap/products.xml.js b/src/pages/sitemap/products.xml.js new file mode 100644 index 00000000..e5fc8029 --- /dev/null +++ b/src/pages/sitemap/products.xml.js @@ -0,0 +1,30 @@ +import productSearchApi from '@/lib/product/api/productSearchApi' +import { create } from 'xmlbuilder' +import _ from 'lodash-contrib' + +export async function getServerSideProps({ res }) { + const baseUrl = process.env.SELF_HOST + '/sitemap/products' + const limit = 2500 + const query = { limit } + const products = await productSearchApi({ query: _.toQuery(query) }) + const pageCount = Math.ceil(products.response.numFound / limit) + const pages = Array.from({ length: pageCount }, (_, i) => i + 1) + const sitemapIndex = create('sitemapindex', { encoding: 'UTF-8' }) + + const date = new Date() + pages.forEach((page) => { + const sitemap = sitemapIndex.ele('sitemap') + sitemap.ele('loc', `${baseUrl}/${page}.xml`) + sitemap.ele('lastmod', date.toISOString().slice(0, 10)) + }) + + res.setHeader('Content-Type', 'text/xml') + res.write(sitemapIndex.end()) + res.end() + + return { props: {} } +} + +export default function SitemapProducts() { + return null +} |
