getResourceFromContext
从 getStaticProps 或 getServerSideProps 上下文中获取资源。
const resource = await drupal.getResourceFromContext<T = JsonApiResource>( input, context, options?: { params, withAuth, deserialize, locale, defaultLocale, pathPrefix, isVersionable, }): Promise<T>输入: 字符串 | DrupalTranslatedPath- 必需
- 资源类型
node--article或来自translatePathFromContext的翻译后的路径。
上下文: GetStaticPropsContext | GetServerSidePropsContext- 必需
- 来自
getStaticProps或getServerSideProps的上下文。
选项- 可选
params: JsonApiParams: JSON:API 参数,例如filter、fields、include或sort。withAuth: boolean | DrupalClientAuth:- 设置要使用的身份验证方法。请参阅 身份验证文档。
- 设置为
true以使用在客户端配置的身份验证方法。
deserialize: boolean: 设置为 false 以返回原始 JSON:API 响应。locale: string: 获取资源的语言环境。defaultLocale: string: 站点的默认语言环境。pathPrefix: string: 如果您是从子目录调用,则设置 pathPrefix。例如:对于/articles/[...slug].tsx,使用pathPrefix: "/articles"。isVersionable: boolean: 如果您正在获取资源的修订版,则设置为 true。对于节点实体类型,自动设置为 true。
注意
本地化资源将根据
locale和defaultLocale从context中的值获取。如果您传入
DrupalTranslatedPath作为输入,getResourceFromContext将获取路径中的type和id,并向 Drupal 发出getResource调用。
export async function getStaticProps(context) { const path = await drupal.translatePathFromContext(context)
const node = await drupal.getResourceFromContext(path, context)
return { props: { node, }, }}如果您传入
string输入,例如node--article,getResourceFromContext将向 Drupal 发出子请求调用以翻译路径,然后获取资源。
export async function getStaticProps(context) { const node = await drupal.getResourceFromContext("node--article", context)
return { props: { node, }, }}示例
- 从上下文获取资源。
pages/[[...slug]].tsx
export async function getStaticProps(context) { const node = await drupal.getResourceFromContext("node--page", context)
return { props: { node, }, }}- 在子目录中从上下文获取资源。
pages/articles/[[...slug]].tsx
export async function getStaticProps(context) { const node = await drupal.getResourceFromContext("node--page", context, { pathPrefix: "/articles", })
return { props: { node, }, }}TypeScript
- 对于节点实体类型,使用
DrupalNode。
import { DrupalNode } from "next-drupal"
const node = await drupal.getResourceFromContext<DrupalNode>( "node--page", context)- 对于分类术语实体类型,使用
DrupalTaxonomyTerm。
import { DrupalTaxonomyTerm } from "next-drupal"
const term = await drupal.getResourceFromContext<DrupalTaxonomyTerm>( "taxonomy_term--tags", context)有关更多内置类型,请参阅 TypeScript 文档。