İçeriğe geç
Gitupcms
Esc
↑↓gezin↵aç⌘Jönizle
Bu sayfada

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.

Bu sayfa yardımcı oldu mu?