ButterCMS и Astro
ButterCMS — это безголовая CMS и движок для блогов, который позволяет публиковать структурированный контент для использования в вашем проекте.
Интеграция с Astro
Заголовок раздела Интеграция с AstroДля примера полного сайта блога см. Стартовый проект Astro + ButterCMS.
В этом разделе мы будем использовать SDK ButterCMS, чтобы внедрить ваши данные в проект Astro. Чтобы начать, вам потребуется следующее:
Необходимые условия
Заголовок раздела Необходимые условия- 
Проект Astro — Если у вас еще нет проекта Astro, наше Руководство по установке поможет вам быстро начать работу. 
- 
Аккаунт ButterCMS. Если у вас нет учетной записи, вы можете зарегистрироваться для бесплатного пробного периода. 
- 
Ваш API-токен ButterCMS - Вы можете найти свой API-токен на странице Настройки. 
Настройка
Заголовок раздела Настройка- 
Создайте файл .envв корне вашего проекта и добавьте ваш API-токен в качестве переменной окружения:.env BUTTER_TOKEN=ВАШ_API_TOKEN_ЗДЕСЬПодробнее об использовании переменных окружения и файлах .envв Astro.
- 
Установите SDK ButterCMS в качестве зависимости: Окно терминала npm install buttercmsОкно терминала pnpm add buttercmsОкно терминала yarn add buttercms
- 
Создайте файл buttercms.jsв новой директорииsrc/lib/в вашем проекте:src/lib/buttercms.js import Butter from "buttercms";export const butterClient = Butter(import.meta.env.BUTTER_TOKEN);
Это аутентифицирует SDK с помощью вашего API-токена и экспортирует его для использования в вашем проекте.
Получение данных
Заголовок раздела Получение данныхДля получения контента импортируйте этот клиент и используйте одну из его функций retrieve.
В этом примере мы получаем коллекцию, которая содержит три поля: короткий текст name, число price и WYSIWYG description.
---import { butterClient } from "../lib/buttercms";const response = await butterClient.content.retrieve(["shopitem"]);
interface ShopItem {  name: string,  price: number,  description: string,}
const items = response.data.data.shopitem as ShopItem[];---<body>  {items.map(item => <div>    <h2>{item.name} - ${item.price}</h2>    <p set:html={item.description}></p>  </div>)}</body>Интерфейс отражает типы полей. Поле WYSIWYG description загружается как строка HTML, и set:html позволяет вам отобразить его.
Аналогично, вы можете получить страницу и отобразить ее поля:
---import { butterClient } from "../lib/buttercms";const response = await butterClient.page.retrieve("*", "simple-page");const pageData = response.data.data;
interface Fields {  seo_title: string,  headline: string,  hero_image: string,}
const fields = pageData.fields as Fields;---<html>  <title>{fields.seo_title}</title>  <body>    <h1>{fields.headline}</h1>    <img src={fields.hero_image} />  </body></html>Официальные ресурсы
Заголовок раздела Официальные ресурсы- Стартовый проект Astro + ButterCMS
- Полная документация по API ButterCMS
- Руководство по JavaScript от ButterCMS
Ресурсы сообщества
Заголовок раздела Ресурсы сообщества- Добавьте свои!
 
		