Algılama
Gitupcms'in Astro projenizden okuduğu her şey. Böylece hiçbir zaman CMS yapılandırma dosyası yazmanız gerekmez.
Gitupcms projeyi Astro ile aynı şekilde okur. Astro bir şeyi yükleyebiliyorsa Gitupcms de onu düzenleyebilir.
| Kaynak | Gitupcms’in buradan aldığı bilgi |
|---|---|
src/content.config.ts (veya eski src/content/config.ts) |
glob() loader kullanan koleksiyonlar: base, pattern (string ya da dizi, ! hariç tutar). Biçimler: md, mdx, mdoc, json, yaml, toml. Zod şeması alan türlerine, zorunlu/isteğe bağlı ayarlarına, varsayılan değerlere, z.enum seçeneklerine, reference() ve image() alanlarına dönüşür |
file() loader koleksiyonları |
Site verileri: gezinme menüsü, alt bilgi, ayarlar. Tek bir JSON, YAML veya TOML dosyası |
src/content/<folder>/ |
Astro’da olduğu gibi, yalnızca astro.config içinde legacy.collectionsBackwardsCompat açıksa |
| Mevcut kayıtların frontmatter’ı | Şemada yer almayan alanlar (string, text, number, boolean, date, image, list, object) |
| En sık kullanılan dosya uzantısı | Yeni kayıtların biçimi (.md, .mdx, .json, .yaml) |
| Bulunan ilk medya klasörü | public/images, public/img, public/uploads, public/assets, src/assets/images, src/assets, public |
.astro/collections/*.json |
Depo Astro’nun kendi JSON Schema dosyalarını (astro sync) içeriyorsa alanlar birebir oradan alınır |
Şemalar
Değişkenlerde tanımlanan şemalar, .extend(), .pick(), .omit(), .partial() ve ...x.shape yaymaları desteklenir. Şemada yer almayan anahtarlar Zod onları attığı için gizlenir. Şema gevşekse (z.looseObject, .passthrough()) bu anahtarlar gizlenmez. Şema yoksa alanlar doğrudan kayıtların kendisinden alınır.
import { defineCollection, reference, z } from "astro:content";
import { glob } from "astro/loaders";
const blog = defineCollection({
loader: glob({ base: "./src/content/blog", pattern: "**/*.md" }),
schema: ({ image }) =>
z.object({
title: z.string(),
date: z.coerce.date(),
cover: image().optional(),
author: reference("authors"),
tags: z.array(z.string()).default([]),
draft: z.boolean().default(false),
}),
});
export const collections = { blog };
Bu şemadan bir metin alanı, bir tarih seçici, bir görsel seçici, bir yazar seçim kutusu, bir etiket listesi ve bir Draft anahtarı içeren bir form oluşur.
Görsel yolları
Görsel alanları, public/ içindeki medya için /images/x.png biçiminde bir yol saklar. src/ içindeki medya için ise kayda göre göreli bir yol (../../assets/x.png) saklar, çünkü Astro’nun image() fonksiyonu bunu bekler.