如何使用CMS后端在gatsby中以编程方式创建页面?

时间:2020-06-24 07:40:25

标签: reactjs graphql gatsby

我有一个Django CMS作为我的后端应用程序。而且我正在尝试在Gatsby前端站点中动态创建页面。我的Django应用程序是使用Graphene通过GraphQL公开的。但是我无法从后端CMS查询这些标签,也无法使用gatsby-node.js创建页面。在后端应用程序中创建页面时如何创建页面?

这个想法

//gatsby-node.js

exports.createPages = ({ graphql, actions }) => {
    const pages = graphql`
        {
            blogPages{
                edges{
                    node{
                        slug     // this slug supposed to come from the backend CMS (Atleast i think)
                    }
                }
            }
        }
    `;

    const { createPage } = actions
    const blogTemplate = path.resolve(`src/templates/blogTemplate.js`);

    pages.blogPages.edges.forEach(edge => {   //this should help to create dynamic pages - slug coming from backend CMS
      const slug = edge.node.blogpage.slug;
      createPage({
        path: slug,
        component: blogTemplate
    })  
  })
}

1 个答案:

答案 0 :(得分:1)

已经在评论中说过了,但仅作总结:由于Gatsby是静态网站生成器,因此您无法在运行时动态添加页面。每个页面对应于自己的html文件,需要在您的网络服务器上创建。那不是您在运行时可以做的。

您能做的是建立一个持续集成的工作流程,让您的构建在云中的某个地方运行。在Django中进行更改时触发它,或者定期(每小时/每天)运行它以更新站点。

如果运行重建不适用于您的用例,则需要查看一种完全不同的体系结构。