环境变量
Next.js 和 Drupal 的配置变量。
.env.local
# RequiredNEXT_PUBLIC_DRUPAL_BASE_URL=http://localhost:8080NEXT_IMAGE_DOMAIN=localhost
# Required for Preview ModeDRUPAL_PREVIEW_SECRET=
# Required for On-demand RevalidationDRUPAL_REVALIDATE_SECRET=
# Authentication (Bearer)DRUPAL_CLIENT_ID=DRUPAL_CLIENT_SECRET=
# Authentication (Basic)DRUPAL_USERNAME=DRUPAL_PASSWORD=
# OptionalDRUPAL_SITE_ID=DRUPAL_FRONT_PAGE=
必需
这些环境变量是初始化新的 DrupalClient
所必需的。
名称 | 描述 |
---|---|
NEXT_PUBLIC_DRUPAL_BASE_URL | Drupal 站点的基本 URL。例如:https://drupal.org |
NEXT_IMAGE_DOMAIN | 用于 next/image 的域名。例如:drupal.org |
const drupal = new DrupalClient(process.env.NEXT_PUBLIC_DRUPAL_BASE_URL)
预览模式
预览模式所需的环境变量。
名称 | 描述 |
---|---|
DRUPAL_PREVIEW_SECRET | 用于 预览模式 的密钥。例如:6SZy9xkdtR |
const drupal = new DrupalClient(process.env.NEXT_PUBLIC_DRUPAL_BASE_URL, { previewSecret: process.env.DRUPAL_PREVIEW_SECRET,})
按需重新验证
按需重新验证所需的环境变量。
名称 | 描述 |
---|---|
DRUPAL_REVALIDATE_SECRET | 用于按需重新验证的密钥。示例:U2Y5bbkKJ08Ua8F |
pages/api/revalidate.ts
export default async function handler(request, response) { const secret = request.query.secret as string
// Validate secret. if (secret !== process.env.DRUPAL_REVALIDATE_SECRET) { return response.status(401).json({ message: "Invalid secret." }) }}
身份验证 (Bearer)
名称 | 描述 |
---|---|
DRUPAL_CLIENT_ID | OAuth 客户端 ID。示例:a53b1d17-6b23-478d-8649-9aee63974c80 |
DRUPAL_CLIENT_SECRET | OAuth 客户端密钥。示例:3#9h$2DU#8qKb6& |
const drupal = new DrupalClient(process.env.NEXT_PUBLIC_DRUPAL_BASE_URL, { auth: { clientId: process.env.DRUPAL_CLIENT_ID, clientSecret: process.env.DRUPAL_CLIENT_SECRET, },})
身份验证 (Basic)
名称 | 描述 |
---|---|
DRUPAL_USERNAME | Drupal 用户名。示例:admin |
DRUPAL_PASSWORD | Drupal 密码。示例:password |
const drupal = new DrupalClient(process.env.NEXT_PUBLIC_DRUPAL_BASE_URL, { auth: { username: process.env.DRUPAL_USERNAME, password: process.env.DRUPAL_PASSWORD, },})
可选
这些环境变量是可选的,并且从next-drupal 1.4.0
开始不再需要。
名称 | 描述 |
---|---|
DRUPAL_SITE_ID | Drupal 上 Next.js 站点的站点 ID。示例:marketing_site 。有关使用示例,请参阅按站点筛选指南。 |
DRUPAL_FRONT_PAGE | 首页路径:示例:/front |
DRUPAL_SITE_ID
// Fetch all articles with DRUPAL_SITE_ID in field_sites.const nodes = await drupal.getResourceCollection<DrupalNode[]>( "node--article", { params: { filter: { "field_sites.meta.drupal_internal__target_id": process.env.DRUPAL_SITE_ID, }, }, })
DRUPAL_FRONT_PAGE
const drupal = new DrupalClient(process.env.NEXT_PUBLIC_DRUPAL_BASE_URL, { frontPage: process.env.DRUPAL_FRONT_PAGE,})