Saltearse al contenido

Decap CMS y Astro

Decap CMS (anteriormente Netlify CMS) es un sistema de gestión de contenido de código abierto basado en Git.

Decap te permite aprovechar al máximo todas las funciones de Astro, incluida la optimización de imágenes y las colecciones de contenido.

Decap añade una ruta (normalmente /admin) a tu proyecto que cargará una aplicación React para permitir a los usuarios autorizados administrar el contenido directamente desde el sitio web desplegado. Decap enviará los cambios directamente al repositorio fuente de su proyecto Astro.

Hay dos opciones para añadir Decap a Astro:

  1. Instala Decap a través de un administrador de paquetes con el siguiente comando:
Ventana de terminal
npm install decap-cms-app
  1. Importa el paquete a una etiqueta <script> dentro del <body> de tu página.
/admin
<body>
<!-- Incluye el script que crea la página y alimenta Decap CMS -->
<script src="https://unpkg.com/decap-cms@^3.1.2/dist/decap-cms.js"></script>
</body>
  1. Crea una carpeta de administración estática en public/admin/

  2. Agrega config.yml a public/admin/:

    • Directorypublic
      • Directoryadmin
        • config.yml
  3. Para agregar soporte para colecciones de contenido, configura cada esquema en config.yml. El siguiente ejemplo configura una colección blog, definiendo una etiqueta para la propiedad frontmatter de cada entrada:

    /public/admin/config.yml
    collections:
    - name: "blog" # Usado en rutas, por ejemplo, /admin/collections/blog
    label: "Blog" # Usado en la interfaz de usuario
    folder: "src/content/blog" # La ruta a la carpeta donde se almacenan los documentos
    create: true # Permitir a los usuarios crear nuevos documentos en esta colección
    fields: # Los campos para cada documento, generalmente al principio
    - { label: "Layout", name: "layout", widget: "hidden", default: "blog" }
    - { label: "Title", name: "title", widget: "string" }
    - { label: "Publish Date", name: "date", widget: "datetime" }
    - { label: "Featured Image", name: "thumbnail", widget: "image" }
    - { label: "Rating (scale of 1-5)", name: "rating", widget: "number" }
    - { label: "Body", name: "body", widget: "markdown" }
  4. Agregar la ruta admin para tu aplicación React. Este archivo puede ser public/admin/index.html junto con config.yml o, si prefieres utilizar una ruta de Astro, src/pages/admin.astro.

    • Directorypublic
      • Directoryadmin -config.yml
        • index.html
    /public/admin/index.html
    <!doctype html>
    <html lang="es">
    <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="robots" content="noindex" />
    <link href="/admin/config.yml" type="text/yaml" rel="cms-config-url" />
    <title>Administrador de contenidos</title>
    </head>
    <body>
    <script src="https://unpkg.com/decap-cms@^3.1.2/dist/decap-cms.js"></script>
    </body>
    </html>
  5. Para habilitar la carga de medios a una carpeta específica a través del editor de Decap, agrega una ruta adecuada:

    /public/admin/config.yml
    media_folder: "src/assets/images" # Ubicación donde se almacenarán los archivos en el repositorio
    public_folder: "src/assets/images" # El atributo src para los medios cargados

Consulta la documentación de configuración de Decap CMS para obtener instrucciones y opciones completas.

Navega hasta yoursite.com/admin/ para usar el editor de Decap CMS.

Decap CMS fue desarrollado originalmente por Netlify y tiene soporte de primera clase para Netlify Identity.

Cuando despliegues en netlify, configura la identidad para tu proyecto a través del panel de Netlify e incluye el Netlify Identity Widget en la ruta admin de tu proyecto. Opcionalmente, incluye el widget de identidad en la página de inicio de tu sitio si planeas invitar a nuevos usuarios por correo electrónico.

Decap CMS con clientes OAuth externos

Sección titulada Decap CMS con clientes OAuth externos

Cuando despliegues en proveedores de hosting distintos de Netlify, debes crear tus propias rutas OAuth.

En Astro, esto se puede hacer con rutas renderizadas bajo demanda en tu proyecto configurado con la salida server o hybrid activada.

Consulta los Documentos OAuth de Decap para obtener una lista de clientes OAuth compatibles mantenidos por la comunidad.

Los siguientes sitios usan Astro + Decap CMS en producción:

Más guías de CMS