我有一个 Gatsby 网站,它使用 GraphQL 从 Wordpress REST API 查询信息以动态创建网站页面。我想将我的索引页面设置为动态创建的主页,即home.html
我看到这个帖子类似在 Gatsby CMS 上,如何将“关于”页面设置为索引页面
然而,他们有一个about.js
对应于他们的关于页面的文件,这意味着他们可以将其导出为组件并在索引中使用它,或者他们甚至可以将该文件的内容复制到index.js
。我想要设置为索引的主页是动态生成的,并使用不能在外部使用的 GraphQL 查询page.js
模板。所以我没有看到将其复制到另一个文件的简单方法。
我想我的最后一个选择是将我的服务器设置为指向静态文件public/home.html
并将其作为网站根目录,但该帖子中的人试图阻止人们这样做。
有任何想法吗?
这是生成网站页面的 page.js 模板:
const PageTemplate = ({ data }) => (
<Layout>
{<h1 dangerouslySetInnerHTML={{ __html: data.currentPage.title }} />}
{
renderBlocks(gatherBlocks(data.currentPage.acf.page_blocks, data))
}
</Layout>
);
export default PageTemplate;
export const pageQuery = graphql`
query ($id: String!) {
currentPage: wordpressPage(id: {eq: $id}) {
title
id
parent {
id
}
template
acf {
page_blocks {
block_type {
acf_fc_layout
cs_title
cs_text
}
wordpress_id
}
}
}
}
`;
这是我的索引页:
import React from "react"
import Layout from "../components/global/Layout"
const IndexPage = () => (
<Layout>
<h1>Hi people</h1>
<p>Welcome to the Tank Gatsby site.</p>
<p>Now go build something great.</p>
</Layout>
)
export default IndexPage
我今天也经历了同样的情况。我使用以下方法将动态创建的页面与 uri '/home'(使用 GraphQL 查询从 wordpress 获取)用作我的 Gatsby 网站的主页:
- 删除页面目录中默认的index.js 文件。
- 在 gatsby-node.js 文件中,更改 uri
在使用 CreatePage API 之前,将页面从“/home”更改为“/”。
以下是实现所需结果的示例代码:
// loop through WordPress pages and create a Gatsby page for each one
pages.forEach(page => {
if(page.uri==='/home/')
page.uri = '/'
actions.createPage({
path: page.uri,
component: require.resolve(`./src/templates/${page.template.templateName}.js`),
context: {
id: page.id,
},
})
})
在上面的代码中,页面是指使用 GraphQL 从 WordPress 获取的页面。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)