Decap CMS & Astro
本頁內容尚未翻譯。
Decap CMS (formerly Netlify CMS) is an open-source, Git-based content management system.
Decap allows you to take full advantage of all of Astro’s features, including image optimization and content collections.
Decap adds a route (typically /admin
) to your project that will load a React app to allow authorized users to manage content directly from the deployed website. Decap will commit changes directly to your Astro project’s source repository.
Installing DecapCMS
Section titled Installing DecapCMSThere are two options for adding Decap to Astro:
-
Install Decap via a package manager with the following command:
Terminal window npm install decap-cms-appTerminal window pnpm add decap-cms-appTerminal window yarn add decap-cms-app -
Import the package into a
<script>
tag in your page<body>
/admin <body><!-- Include the script that builds the page and powers Decap CMS --><script src="https://unpkg.com/decap-cms@^3.1.2/dist/decap-cms.js"></script></body>
Configuration
Section titled Configuration-
Create a static admin folder at
public/admin/
-
Add
config.yml
topublic/admin/
:目錄public
目錄admin
- config.yml
-
To add support for content collections, configure each schema in
config.yml
. The following example configures ablog
collection, defining alabel
for each entry’s frontmatter property:/public/admin/config.yml collections:- name: "blog" # Used in routes, e.g., /admin/collections/bloglabel: "Blog" # Used in the UIfolder: "src/content/blog" # The path to the folder where the documents are storedcreate: true # Allow users to create new documents in this collectionfields: # The fields for each document, usually in frontmatter- { 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" } -
Add the
admin
route for your React app. This file can be eitherpublic/admin/index.html
alongside yourconfig.yml
or, if you prefer to use an Astro route,src/pages/admin.astro
.目錄public
目錄admin
- config.yml
- index.html
/public/admin/index.html <!doctype html><html lang="en"><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>Content Manager</title></head><body><script src="https://unpkg.com/decap-cms@^3.1.2/dist/decap-cms.js"></script></body></html> -
To enable media uploads to a specific folder via the Decap editor, add an appropriate path:
/public/admin/config.yml media_folder: "src/assets/images" # Location where files will be stored in the repopublic_folder: "src/assets/images" # The src attribute for uploaded media
See the the Decap CMS configuration documentation for full instructions and options.
Usage
Section titled UsageNavigate to yoursite.com/admin/
to use the Decap CMS editor.
Authentication
Section titled AuthenticationDecap CMS with Netlify Identity
Section titled Decap CMS with Netlify IdentityDecap CMS was originally developed by Netlify and has first class support for Netlify Identity.
When deploying to netlify, configure Identity for your project via the Netlify dashboard and include the Netlify Identity Widget on the admin
route of your project. Optionally include the Identity Widget on the homepage of your site if you plan to invite new users via email.
Decap CMS with External OAuth Clients
Section titled Decap CMS with External OAuth ClientsWhen deploying to hosting providers other than Netlify, you must create your own OAuth routes.
In Astro, this can be done with on-demand rendered routes in your project configured with server
or hybrid
output enabled.
See Decap’s OAuth Docs for a list of compatible community-maintained OAuth clients.
Community Resources
Section titled Community Resources-
Netlify Identity Template: astro-decap-ssg-netlify
-
On-demand rendering Oauth Routes with Astro Template: astro-decap-starter-ssr
-
Blog Post: Author your Astro site’s content with Git-based CMSs by Aftab Alam
-
Youtube Tutorial: Create a Custom Blog with Astro & NetlifyCMS in MINUTES! by Kumail Pirzada
Production Sites
Section titled Production SitesThe following sites use Astro + Decap CMS in production:
- yunielacosta.com by Yuniel Acosta — source code on GitHub (Netlify CMS)
- portfolioris.nl by Joris Hulsbosch – source code on GitHub