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 文档。