按站点筛选
如何获取按站点筛选的 JSON:API 资源。
注意:此功能仅适用于 Drupal 9.3.x。请查看更改记录此处。
如果您有多个基于单个 Drupal 源构建的 Next.js 站点,您可以使用站点 machine_name
筛选 JSON:API 资源。
集合
您可以使用 FIELD_NAME.meta.drupal_internal__target_id
筛选资源集合。
// Fetch all Article nodes where the entity reference field `field_sites` has value blog.const nodes = await drupal.getResourceCollection<DrupalNode[]>( "node--article", { params: { filter: { "field_sites.meta.drupal_internal__target_id": "blog", }, }, })
field_sites
是Article
内容类型的 **Next.js 站点** 实体引用字段。blog
是 Next.js 站点的 ID。
在 getStaticProps
中,您可以使用
export async function getStaticProps( context): Promise<GetStaticPropsResult<IndexPageProps>> { const nodes = await drupal.getResourceCollectionFromContext<DrupalNode[]>( "node--article", context, { params: { include: "field_image,uid", sort: "-created", filter: { "field_sites.meta.drupal_internal__target_id": "blog", }, }, } )
return { props: { nodes, }, }}
动态路由
在 getStaticPaths
中,您可以通过传递 params
来按站点筛选。
export async function getStaticPaths(context): Promise<GetStaticPathsResult> { const paths = await drupal.getStaticPathsFromContext( ["node--article"], context, { params: { filter: { "field_sites.meta.drupal_internal__target_id": "blog", }, }, } )
return { paths, fallback: false, }}