如何将Drupal中/home路径的首页设置为Gatsby的根路径/
解决Gatsby与Drupal首页路径不匹配的问题
先排查CreatePage API的常见问题
你之前的配置没生效,大概率是这几个原因:
- 没精准匹配到Drupal中路径为
/home的页面数据 - 代码语法有误,比如路径赋值逻辑写错
- 修改
gatsby-node.js后没重启Gatsby开发服务(这个文件的修改必须重启才会生效)
正确的CreatePage配置示例
在gatsby-node.js里遍历落地页数据时,判断当前页面是否是Drupal的首页,若是则将其路径设为Gatsby的根路径/,其他页面保持原有路径:
exports.createPages = async ({ graphql, actions }) => { const { createPage } = actions; // 查询Drupal的落地页数据 const result = await graphql(` query { allDrupalLandingPage { nodes { path { alias } id } } } `); // 遍历落地页创建页面 result.data.allDrupalLandingPage.nodes.forEach(node => { let pagePath = node.path.alias; // 匹配Drupal首页路径,替换为Gatsby根路径 if (pagePath === '/home') { pagePath = '/'; } createPage({ path: pagePath, component: require.resolve('./src/templates/landing-page.js'), // 替换为你的落地页模板路径 context: { id: node.id, }, }); }); };
额外注意事项
- 确认GraphQL查询的字段是否正确,不同Drupal插件版本可能字段名有差异,比如有些场景下路径字段直接是
alias而非path.alias - 如果之前已经生成过
/home页面,执行gatsby clean清理缓存后再重启服务,避免旧缓存影响 - 检查落地页模板逻辑,确保没有强制覆盖页面路径的代码
内容的提问来源于stack exchange,提问作者iyyappan govind
相关产品推荐
相关产品推荐

