---
title: Algılama
description: >-
  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 [#schemas]

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.

```ts src/content.config.ts
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ı [#image-paths]

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.

:::note
Loader yoksa Astro hiçbir şey yüklemez, Gitupcms de bu yüzden hiçbir şey göstermez. Bir `glob()` loader eklediğinizde koleksiyon görünür.
:::
