按站点筛选

如何获取按站点筛选的 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_sitesArticle 内容类型的 **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,
}
}