Astro x Hygraph: загрузчик контента

Автор
Matthew Phillips

Мы рады объявить Hygraph партнёром запуска Astro Content Layer — нового подхода к загрузке контента из внешних CMS в content collections. Hygraph — API-first CMS, который позволяет организовать сложный структурированный контент и строить высокопроизводительные контент-ориентированные приложения на любом фронтенде.

Content collections позволяют объединять контент разных типов в единый API. С Content Layer теперь можно подключать контент из внешних источников, например Hygraph CMS.

Using the Hygraph loader

Чтобы использовать новый загрузчик (в beta), сначала установите пакет @hygraph/hygraph-astro-loader:

npm install @hygraph/hygraph-astro-loader

В панели Hygraph найдите endpoint API, скопируйте URL и передайте его как переменную окружения, например HYGRAPH_ENDPOINT.

Затем импортируйте и используйте загрузчик в файле конфигурации src/content/config.ts:

import { defineCollection, z } from 'astro:content';
import { HygraphLoader } from '@hygraph/hygraph-astro-loader';
const pages = defineCollection({
loader: HygraphLoader({
endpoint: import.meta.env.HYGRAPH_ENDPOINT,
operation: 'pages',
fields: ["id", "title", "slug", { "body": ["text"] }],
}),
schema: z.object({
id: z.string(),
title: z.string({
required_error: 'Title is required'
}).min(1, {
message: 'Title is required to be at least 1 character'
}),
slug: z.string(),
body: z.object({
text: z.string(),
}),
})
})
export const collections = { pages }

И всё — дальше можно запрашивать и использовать коллекции так же, как локальные. Подробнее — в документации Astro о content collections.

Также посмотрите вчерашний deep dive по Content Layer — как работают загрузчики и как создать свой. И GitHub-репозиторий загрузчика Hygraph для сообщений об ошибках и вклада.