Decap CMS и Astro
Decap CMS (ранее известная как Netlify CMS) — это система управления контентом с открытым исходным кодом, основанная на Git.
Decap позволяет в полной мере использовать все возможности Astro, включая оптимизацию изображений и коллекции контента.
Decap добавляет в ваш проект маршрут (обычно /admin
), который загружает приложение React, позволяющее авторизованным пользователям управлять контентом прямо с развернутого сайта. Decap будет фиксировать изменения непосредственно в исходном репозитории вашего проекта Astro.
Установка DecapCMS
Заголовок раздела Установка DecapCMSСуществует два варианта добавления Decap в Astro:
- Установить Decap через менеджер пакетов с помощью следующей команды:
npm install decap-cms-app
pnpm add decap-cms-app
yarn add decap-cms-app
- Импортировать пакет в тег
<script>
на вашей странице<body>
<body> <!-- Включите скрипт, который создает страницу и обеспечивает работу Decap CMS --> <script src="https://unpkg.com/decap-cms@^3.1.2/dist/decap-cms.js"></script> </body>
Конфигурация
Заголовок раздела Конфигурация-
Создайте статическую папку admin по адресу
public/admin/
. -
Добавьте
config.yml
вpublic/admin/
:Directorypublic
Directoryadmin
- config.yml
-
Чтобы добавить поддержку коллекций контента, настройте каждую схему в
config.yml
. Следующий пример настраивает коллекциюblog
, определяяlabel
для свойства frontmatter каждой записи:/public/admin/config.yml collections:- name: "blog" # Используется в маршрутах, например, /admin/collections/bloglabel: "Blog" # Используется в UIfolder: "src/content/blog" # Путь к папке, в которой хранятся документыcreate: true # Разрешить пользователям создавать новые документы в этой коллекцииfields: # Поля для каждого документа, обычно в 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" } -
Добавьте маршрут
admin
для вашего приложения React. Этот файл может находиться либо вpublic/admin/index.html
вместе с вашимconfig.yml
, либо, если вы предпочитаете использовать маршрут Astro, вsrc/pages/admin.astro
.Directorypublic
Directoryadmin
- 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> -
Чтобы разрешить загрузку медиафайлов в определенную папку через редактор Decap, добавьте соответствующий путь:
/public/admin/config.yml media_folder: "src/assets/images" # Место, где файлы будут храниться в репозиторииpublic_folder: "src/assets/images" # Атрибут src для загружаемых медиафайлов
Полные инструкции и опции см. в документации по конфигурации Decap CMS.
Использование
Заголовок раздела ИспользованиеПерейдите по адресу yoursite.com/admin/
для использования редактора Decap CMS.
Аутентификация
Заголовок раздела АутентификацияDecap CMS с Netlify Identity
Заголовок раздела Decap CMS с Netlify IdentityDecap CMS был изначально разработан компанией Netlify и имеет первоклассную поддержку Netlify Identity.
При развертывании на Netlify настройте Identity для вашего проекта через панель управления Netlify и включите Netlify Identity Widget в маршрут admin
вашего проекта. Опционально включите виджет Identity на домашней странице вашего сайта, если вы планируете приглашать новых пользователей по электронной почте.
Decap CMS с внешними OAuth-клиентами
Заголовок раздела Decap CMS с внешними OAuth-клиентамиПри развертывании на хостинг-провайдерах, отличных от Netlify, вам необходимо создать собственные маршруты OAuth.
В Astro это можно сделать с помощью динамически создаваемых маршрутов в вашем проекте, настроенных с включенным server
или hybrid
выводом.
Посмотрите Документацию Decap по OAuth для списка совместимых OAuth-клиентов, поддерживаемых сообществом.
Ресурсы сообщества
Заголовок раздела Ресурсы сообщества-
Шаблон Netlify Identity: astro-decap-ssg-netlify
-
Шаблон с маршрутами OAuth с отложенным рендерингом с помощью Astro: astro-decap-starter-ssr
-
Запись в блоге: Авторский контент вашего сайта Astro с помощью CMS на базе Git от Aftab Alam
-
Учебное пособие на YouTube: Создание пользовательского блога с Astro & NetlifyCMS за МИНУТЫ! от Кумаил Пирзада
Сайты в производстве
Заголовок раздела Сайты в производствеСледующие сайты используют Astro + Decap CMS в производстве:
- yunielacosta.com от Yuniel Acosta — исходный код на GitHub (Netlify CMS)
- portfolioris.nl от Joris Hulsbosch — исходный код на GitHub