如何解决如何使用 next.js 创建动态 xml 站点地图?检查下面的代码
我正在遵循一种构建站点地图的方法。在 http//:localhost:3000,页面看起来像这样。我关注的博客是 Given here
sitemap.xml:
*> 此 XML 文件似乎没有任何关联的样式信息
与它。文档树如下所示。 http://localhost:3000/about.jshttp://localhost:3000/activate.jshttp://localhost:3000/blogshttp://localhost:3000/categorieshttp://localhost:3000/contact.jshttp:// localhost:3000/disclaimer.jshttp://localhost:3000/index.jshttp://localhost:3000/privacy.jshttp://localhost:3000/profilehttp://localhost:3000/search.jshttp://localhost: 3000/signin.jshttp://localhost:3000/signup.jshttp://localhost:3000/tagshttp://localhost:3000/user [对象对象] [对象对象] *
我做了什么?
我在 sitemp.xml.js
import React from 'react';
import BlogSitemap from '../components/JobSitemap';
import NewSitemap from '../components/NewSitemap';
import {DOMAIN} from '../config';
import fs from "fs";
const Sitemap = () => {};
export const getServerSideProps = ({ res }) => {
const staticPages = fs
.readdirSync("pages")
.filter((staticPage) => {
return ![
"_app.js","_document.js","_error.js","sitemap.xml.js",].includes(staticPage);
})
.map((staticPagePath) => {
return `${DOMAIN}/${staticPagePath}`;
});
//sitemap render
const sitemap = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${staticPages.join('')}
${<BlogSitemap />}
${<NewSitemap/>}
</urlset>
`;
res.setHeader("Content-Type","text/xml");
res.write(sitemap);
res.end();
return {
props: {},};
};
export default Sitemap;
有什么问题?
静态页面呈现得非常好。对于动态页面,我制作了单独的组件。这些动态组件显示为对象。简而言之,该方法不起作用。我想显示这些组件中的所有链接。我应该怎么做才能在站点地图中呈现它们。下面给出这些组件的代码
BlogSitemap.js
import React,{ useState,useEffect } from 'react';
import {list} from '../actions/blog';
import {DOMAIN} from '../config'
const BlogSitemap=()=>{
const [blogs,setBlogs] = useState([]);
useEffect(() => {
loadBlogs();
},[]);
const loadBlogs = () => {
list().then(data => {
if (data.error) {
console.log(data.error);
} else {
setBlogs(data);
}
});
};
const BlogLinks=()=>{
return blogs.map((blog,i)=>{
`
<url key=${i}>
<loc>${DOMAIN}/blogs/${blog.slug}</loc>
<lastmod>${blog.updatedAt}</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
`
})
}
return (
<>
{blogLinks()}
</>
)
}
export default BlogSitemap;
NewsSitemap 组件与它类似。请告诉我一种正确工作的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。