带有 Contentful 的分层菜单
Hierarchical menu with Contentful
Contentful 有一个 "Links" 的概念,可以是多个对象,也可以是一个对象。但是,如果不加倍工作(即指定每个对象的子项和父项),我找不到对反向关系建模的方法。
我想像这样使用 Contentful 来支持简单的导航:
菜单项 1
- 子菜单项 1
- 子菜单项 2
- 子菜单项 3
菜单项 2
- 子菜单项 4
- 子菜单项 5
- 子菜单项 6
-- 子子菜单项 1
链接可能看起来像 /<parent.slug>/<child.slug>/<child.slug>/
我可以通过遍历父关系来找到要呈现的页面条目,以确保我得到一个带有 slug 的页面,以及一个带有特定 slug 的父页面。
但是,除非您在对象中包含一个 "children" 字段,否则很难在不求助于多个 API 调用的情况下呈现子菜单项 - 这很容易出错和不一致。
如果您的项目只有子关系,您可以利用包含概念。只需获取最下方的子项并将 includes
参数设置为足够高的值(10 为最大值),Contentfuls API 将在单个 API 调用中包含所有引用的内容。
您可以在此处阅读有关包含的更多信息:https://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/links
是的,我们遇到了同样的问题。我们有一个页面模型,带有一个名为 'parentPage' 的 refLink。我们的中间件对 CF 进行 1 次调用以获取所有页面并在内存中构建站点树模型。
从这个模型中,我们有方法获得 children,并获得 URL 鼻涕虫。
Contentful 有一个 "Links" 的概念,可以是多个对象,也可以是一个对象。但是,如果不加倍工作(即指定每个对象的子项和父项),我找不到对反向关系建模的方法。
我想像这样使用 Contentful 来支持简单的导航:
菜单项 1
- 子菜单项 1
- 子菜单项 2
- 子菜单项 3
菜单项 2
- 子菜单项 4
- 子菜单项 5
- 子菜单项 6
-- 子子菜单项 1
链接可能看起来像 /<parent.slug>/<child.slug>/<child.slug>/
我可以通过遍历父关系来找到要呈现的页面条目,以确保我得到一个带有 slug 的页面,以及一个带有特定 slug 的父页面。
但是,除非您在对象中包含一个 "children" 字段,否则很难在不求助于多个 API 调用的情况下呈现子菜单项 - 这很容易出错和不一致。
如果您的项目只有子关系,您可以利用包含概念。只需获取最下方的子项并将 includes
参数设置为足够高的值(10 为最大值),Contentfuls API 将在单个 API 调用中包含所有引用的内容。
您可以在此处阅读有关包含的更多信息:https://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/links
是的,我们遇到了同样的问题。我们有一个页面模型,带有一个名为 'parentPage' 的 refLink。我们的中间件对 CF 进行 1 次调用以获取所有页面并在内存中构建站点树模型。
从这个模型中,我们有方法获得 children,并获得 URL 鼻涕虫。