Reference
Server API Reference for next-drupal
The following functions are meant to be called on the server (`getStaticPaths`, `getStaticProps` and `getServerSideProps`).
getPathsFromContext
Returns a list of paths for dynamic routes in `getStaticPaths` or `getServerSideProps`.
`getPathsFromContext` accepts a resource type or an array of resource types.
If you have locales configured in your `next.config.js` file, it will automatically create localized routes.
function getPathsFromContext( types: string | string[], context: GetStaticPathsContext, options?: { params?: JsonApiParams }): Promise<any[]>Examples
Get paths for all article nodes.
pages/[[...slug]].tsx
import { getPathsFromContext } from "next-drupal"
export async function getStaticPaths(context) { return { paths: await getPathsFromContext("node--article", context), fallback: true, }}Get paths for all published article and page nodes.
pages/[[...slug]].tsx
import { getPathsFromContext } from "next-drupal"
export async function getStaticPaths(context) { return { paths: await getPathsFromContext(["node--article", "node--page"], context, { params: { "filter[status]": "1", }, }), fallback: true, }}getResourceTypeFromContext
Returns a resource type in `getStaticProps` or `getServerSideProps`.
function getResourceTypeFromContext( context: GetStaticPropsContext, options?: { prefix?: string }): Promise<string>Examples
pages/[[...slug]].tsx
import { getResourceTypeFromContext } from "next-drupal"
export async function getStaticProps(context) { const type = await getResourceTypeFromContext(context)
if (type === "node--article") { // Do something. }}getResource
Loads a resource by ID (uuid) in `getStaticProps` or `getServerSideProps`.
function getResource( type: string, uuid: string, options?: { deserialize?: boolean } & JsonApiWithLocaleOptions): Promise<any>Examples
Get a page by uuid.
const node = await getResource( "node--page", "07464e9f-9221-4a4f-b7f2-01389408e6c8")Get the `es` translation for a page by uuid.
const node = await getResource( "node--page", "07464e9f-9221-4a4f-b7f2-01389408e6c8", { locale: "es", defaultLocale: "en", })getResourceFromContext
Returns a single resource in `getStaticProps` or `getServerSideProps`.
function getResourceFromContext( type: string, context: GetStaticPropsContext, options?: { prefix?: string deserialize?: boolean params?: JsonApiParams }): Promise<any>Examples
Get a page node.
pages/[[...slug]].tsx
import { getResourceFromContext } from "next-drupal"
export async function getStaticProps(context) { const node = await getResourceFromContext("node--page", context)
return { props: { node, }, revalidate: 60, }}getResourceByPath
Get a resource by path in `getStaticProps` or `getServerSideProps`.
function getResourceByPath( path: string, options?: { deserialize?: boolean } & JsonApiWithLocaleOptions): Promise<any>Examples
Get an article by path.
const node = await getResourceByPath("/blog/hello-world")Get the `es` translation for an article by path.
const node = await getResourceByPath("/blog/hello-world", { locale: "es", defaultLocale: "en",})Get some fields for an article by path.
const node = await getResourceByPath("/blog/hello-world", { params: { "fields[node--article]": "title,body,status,path", },})getResourceCollection
Returns a collection of resources in `getStaticProps` or `getServerSideProps`.
function getResourceCollection( type: string, options?: { deserialize?: boolean } & JsonApiWithLocaleOptions): Promise<any>Examples
Get a collection of articles.
const articles = await getResourceCollection("node--article")Get a collection of published articles.
const articles = await getResourceCollection("node--article", { params: { "filter[status]": "1", },})getResourceCollectionFromContext
Returns a collection of resources from context in `getStaticProps` or `getServerSideProps`.
function getResourceCollectionFromContext( type: string, context: GetStaticPropsContext, options?: { deserialize?: boolean params?: JsonApiParams }): Promise<any>Examples
Get a collection of articles
export async function getStaticProps(context) { const articles = await getResourceCollectionFromContext( "node--article", context )}getMenu
You need to install the JSON:API Menu Items module to use `useMenu` and `getMenu`.
Returns menu items for a menu by name in `getStaticProps` or `getServerSideProps`.
function getMenu( name: string, options?: { deserialize?: boolean } & JsonApiWithLocaleOptions): Promise<{ items: DrupalMenuLinkContent[] tree: DrupalMenuLinkContent[]}>`items`is an array of menu items sorted by weight.`tree`is the hierarchical menu tree with parent and children.
Examples
const { tree, items } = await getMenu("main")translatePath
Returns the translated path from Decoupled Router.
This is available in `next-drupal ^1.1.0`. See a guide on how to use translatedPath to handle redirect here.
function translatePath( path: string, options?: { accessToken?: AccessToken }): Promise<DrupalTranslatedPath>Examples
const path = await translatePath("/about")translatePathFromContext
Returns the translated path from getStaticProps and getServerSideProps context.
function translatePathFromContext( context: GetStaticPropsContext, options?: { accessToken?: AccessToken prefix?: string }): Promise<DrupalTranslatedPath>Examples
export async function getStaticProps(context) { const path = await translatePathFromContext(context)}--
getView
You need to install the JSON:API Views module to use `getView`.
Returns view results in `getStaticProps` or `getServerSideProps`.
export async function getView<T>( name: string, options?: { deserialize?: boolean accessToken?: AccessToken } & JsonApiWithLocaleOptions): Promise<{ results: T meta: Record<string, any> links: { [key in "next" | "prev" | "self"]?: { href: "string" } }}>`results`is an array of view results.`meta`has additional information from the view. ex. the count.
Examples
const view = await getView("article--block_1")You can also pass additional params to `getView`.
// Get the articles--block_1 view with user information.const view = await getView("article--block_1", { params: { include: "uid", },})Filters
You can pass filters to the view just like JSON:API params. Note `status` is an exposed filter on the view.
// Get the articles--block_1 view with user information and filter by status true.const view = await getView("article--block_1", { params: { include: "uid", "views-filter[status]": 1, },})TypeScript
import { DrupalNode } from "next-drupal"
const view = await getView<DrupalNode[]>("article--block_1")`view.results` will be properly typed as an array of `DrupalNode`.