Ir al contenido

ButterCMS y Astro

ButterCMS es un CMS headless y un motor de blogs que te permite publicar contenido estructurado para usarlo en tu proyecto.

En esta sección, usaremos el SDK de ButterCMS para importar tus datos a tu proyecto Astro.

Para empezar, necesitarás lo siguiente:

  1. Un proyecto Astro - Si aún no tienes un proyecto Astro, nuestra Guía de instalación te permitirá ponerlo en marcha en un momento.

  2. Una cuenta de ButterCMS - Si aún no tienes una cuenta, puedes registrarte para disfrutar de una prueba gratuita.

  3. Tu token de la API de ButterCMS - Puedes encontrar tu token de la API en la página configuración.

  1. Crea un archivo .env en el directorio raíz de tu proyecto y añade tu token de la API como variable de entorno:

    .env
    BUTTER_TOKEN=YOUR_API_TOKEN_HERE
  2. Instala el SDK de ButterCMS como dependencia:

    Terminal window
    npm install buttercms
  3. Crea un archivo buttercms.js en un nuevo directorio src/lib/ de tu proyecto:

    src/lib/buttercms.js
    import Butter from 'buttercms';
    export const butterClient = Butter(import.meta.env.BUTTER_TOKEN);

Esto autentica el SDK mediante tu token de la API y lo exporta para que puedas usarlo en todo tu proyecto.

Para obtener contenido, importa este cliente y usa una de sus funciones retrieve.

En este ejemplo, recuperamos una colección que tiene tres campos: un texto breve name, un número price y un campo WYSIWYG description.

src/pages/ShopItem.astro
---
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>

La interfaz refleja los tipos de campo. El campo description de tipo WYSIWYG se carga como una cadena de texto HTML, y set:html te permite mostrarlo.

Del mismo modo, puedes recuperar una página y mostrar sus campos:

src/pages/ShopItem.astro
---
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>
  • ¡Agrega el tuyo!

Más guías de CMS

Socios de CMS destacados

  • CloudCannon

    Git-based CMS built for speed, security, and zero headaches.

Todas las guías de CMS

Contribuir Comunidad Patrocinador