我正在尝试在我的 Next.js 应用程序中使用 Prismic 来实现动态路由结构。本质上,我有一个页面,mysite.com/landing-page
例如,我可以在我的[uid]
模板中路由到它,{ uid } = params
在我的getServerSideProps
函数中使用。但是,我希望允许用户通过子目录访问同一页面,例如mysite.com/sacramento-ca/landing-page
. 我所做的研究似乎表明我可以在我的 Prismic 存储库中创建一个内容关系,该关系指定也可以引用该页面的位置(sacramento-ca
作为此处的示例),然后在我的查询中引用这些内容,并通过到页面模板。但是,我无法弄清楚如何实现这一点。
我的pages
目录结构如下:
├── [uid]
│ └── index.tsx
├── index.tsx
├── products
│ └── [uid].tsx
├── projects
│ └── index.tsx
├── promos
│ ├── [id].tsx
│ └── index.tsx
└── sitemap
└── index.tsx
..总体而言,这对于顶级页面来说效果很好。但是 1. 如何查询category
ingetServerSideProps
以及如何命名和嵌套页面模板?我也阅读了这个问题/答案,这似乎是在正确的轨道上,但我不确定如何实现它。如果有帮助,这也是我的[uid]
模板的代码。
import React from 'react';
import { SEO } from 'components/seo/SEO';
import { SliceZone } from 'components/slice-zone/SliceZone';
import { client, queryWithProducts } from '../../lib/prismic';
export const Page = ({ document }: any) => {
const slices = document;
if (!slices) return null;
const { meta_title, meta_description, meta_keywords, social_image } = document;
return (
<>
<SEO
title={meta_title}
description={meta_description}
keywords={meta_keywords}
banner={social_image.url}
/>
<SliceZone slices={slices} />
</>
);
};
export default Page;
export const getServerSideProps = async ({ params, query }: any) => {
console.log(query)
const { uid } = params;
const { data: document } = await client.getByUID('landing', uid, queryWithProducts);
return {
props: {
document,
},
};
};