Ghost y Astro
Ghost es un sistema de gestión de contenido de código abierto, headless y construido en Node.js.
Integración con Astro
Sección titulada Integración con AstroEn esta sección, usaremos la API de contenido de Ghost para traer tus datos a tu proyecto Astro.
Prerrequisitos
Sección titulada PrerrequisitosPara comenzar, necesitarás lo siguiente:
-
Un proyecto Astro - Si aún no tienes un proyecto Astro, nuestra guía de instalación te ayudará a comenzar en cuestión de minutos.
-
Un sitio Ghost - Se supone que tienes un sitio configurado con Ghost. Si no, puedes configurar uno en un entorno local.
-
Llave API de contenido - Puedes crear una integración en la sección
Configuración > Integraciones
de tu sitio. Desde allí puedes encontrar tuLlave API de contenido
.
Configuración de credenciales
Sección titulada Configuración de credencialesPara agregar las credenciales de tu sitio a Astro, crea un archivo .env
en la raíz de tu proyecto con la siguiente variable:
Ahora, deberías poder usar esta variable de entorno en tu proyecto.
Si quisieras tener IntelliSense para tu variable de entorno, puedes crear un archivo env.d.ts
en el directorio src/
y configurar ImportMetaEnv
de la siguiente manera:
Lee más sobre usar variables de entorno y archivos .env
en Astro.
Tu directorio raíz ahora debería incluir estos nuevos archivos:
Directorysrc/
- env.d.ts
- .env
- astro.config.mjs
- package.json
Instalación de dependencias
Sección titulada Instalación de dependenciasPara conectar con Ghost, instala el paquete oficial @tryghost/content-api
usando el comando de tu gestor de paquetes preferido y opcionalmente un paquete útil que contiene definiciones de tipo si estás usando TypeScript:
Creando un blog con Astro y Ghost
Sección titulada Creando un blog con Astro y GhostCon la configuación de arriba, ahora puedes crear un blog que use Ghost como CMS.
Prerrequisitos
Sección titulada Prerrequisitos- Un blog Ghost.
- Un proyecto Astro integrado con la API de contenido de Ghost - Consulta integración con Astro para obtener más detalles sobre cómo configurar un proyecto Astro con Ghost.
Este ejemplo creará una página de índice que enumere las publicaciones con enlaces a páginas de publicaciones individuales generadas dinámicamente.
Obteniendo datos
Sección titulada Obteniendo datosPuedes obtener los datos de tu sitio con el paquete de la API de contenido de Ghost.
Primero, crea un archivo ghost.ts
dentro de un directorio lib
.
Directorysrc/
Directorylib/
- ghost.ts
Directorypages/
- index.astro
- astro.config.mjs
- package.json
Inicializa una instancia de API con la API de Ghost usando la llave API de la página de Integraciones del panel de control de Ghost.
Mostrando una lista de publicaciones
Sección titulada Mostrando una lista de publicacionesLa página src/pages/index.astro
mostrará una lista de publicaciones, cada una con una descripción y un enlace a su propia página.
Directorysrc/
- …
Directorylib/
- ghost.ts
Directorypages/
- index.astro
- astro.config.mjs
- package.json
Impora ghostClient()
en el frontmatter de Astro para usar el método posts.browse()
para acceder a las publicaciones del blog de Ghost. Establece limit: all
para recuperar todas las publicaciones.
Obteniendo los datos a través de la API de contenido devuelve un arreglo de objetos que contiene las propiedades de cada publicación como:
title
- el título de la publicaciónhtml
- la representación HTML del contenido de la publicaciónfeature_image
- la URL de origen de la imagen destacada de la publicaciónslug
- el slug de la publicación
Usa el arreglo posts
devuelto de la petición para mostrar una lista de publicaciones en la página.
Generando páginas
Sección titulada Generando páginasLa página src/pages/post/[slug].astro
genera dinámicamente una página para cada publicación.
Directorysrc/
- …
Directorylib/
- ghost.ts
Directorypages/
- index.astro
Directorypost/
- [slug].astro
- astro.config.mjs
- package.json
Importa ghostClient()
para acceder a las publicaciones del blog usando posts.browse()
y devuelve una publicación como props a cada una de tus rutas dinámicas.
Crea la plantilla para cada página usando las propiedades de cada objeto post
.
<Fragment />
es un componente integrado de Astro que te permite evitar un elemento envoltorio innecesario. Esto puede ser especialmente útil al recuperar HTML de un CMS (por ejemplo, Ghost o WordPress).
Publicando tu sitio
Sección titulada Publicando tu sitioPara desplegar tu sitio visita nuestra guía de despliegue y sigue las instrucciones de tu proveedor de hosting preferido.
Recursos de la comunidad
Sección titulada Recursos de la comunidadastro-starter-ghost
en GitHubastro-ghostcms
en GitHub- Astro + Ghost + Tailwind CSS por Andre Carrera
- Tutorial de Ghost CMS y Astro por Adam Matthiesen