Přeskočit na obsah

Správa obsahu

Kolekce blog a stránky se spravují v Kafe-CMS a ukládají do SQLite. Ostatní obsah (docs, services, stack, settings) stále žije jako Markdown/JSON v src/content.

Kolekce Popis Zdroj
Blog Články a novinky Kafe-CMS (SQLite)
Stránky Marketingové/právní stránky (o nás, kontakt, ceník, soukromí, podmínky) Kafe-CMS (SQLite)

Ty pište v administraci na /kafecms/admin. Routy čtou Kafe-CMS v době požadavku přes src/lib/cms.ts, který adaptuje záznamy do tvarů, jaké Astro komponenty očekávají, a vykresluje rich text pomocí <PortableText>. Schémata kolekcí a počáteční obsah jsou definovány v seed/seed.json.

  • Po změně schématu kolekce spusťte pnpm types:cms, aby se obnovily generované typy.
  • Spuštěním pnpm export-seed uděláte snapshot aktuálního CMS obsahu zpět do seed souboru.

Veřejné routy a odkaz „Zobrazit na webu“

Section titled “Veřejné routy a odkaz „Zobrazit na webu“”

Každá kolekce deklaruje v seed/seed.json urlPattern, který mapuje záznam na jeho veřejnou routu. Tím se řídí odkaz Zobrazit na webu v administraci, sitemapy, menu a přesměrování:

Kolekce urlPattern Příklad
Stránky /{slug} contact/contact
Příspěvky /blog/{slug} welcome/blog/welcome

Bez urlPattern spadne Kafe-CMS zpět na /{collection}/{slug} (např. /pages/contact), což zde nemá odpovídající routu. Čerstvé instalace si tyto vzory vezmou ze seedu automaticky. Pro databázi, která byla naseedovaná dřív, než tyto vzory existovaly, je jednou aplikujte a restartujte:

Terminal window
# lokálně
pnpm set-url-patterns
# uvnitř kontejneru (Dokploy terminál), poté restartujte službu
cd /app && pnpm set-url-patterns

Přibalené routy stránek (/about, /contact, /pricing, /privacy, /terms) jsou ty, zapojené do kolekce pages. Stránka vytvořená v administraci s jiným slugem potřebuje pro vykreslení odpovídající Astro routu.

Stránky používají typovaná pole, takže administrace zobrazuje skutečné vstupy místo surového JSON boxu. Každé pole se mapuje na část vykreslené stránky:

Pole Typ Vykreslí se jako
hero_title / hero_subtitle string / text Hero nadpis + podnadpis stránky
features_title string Nadpis nad mřížkou funkcí/kontaktních metod
features repeater (title, description, icon) Karty funkce/kontaktní metody. icon je název z Lucide (např. rocket, mail, map-pin) — prefix lucide: se přidá automaticky
cta_title / cta_text / cta_button / cta_href string / text / string / url Uzavírací call-to-action pruh (O nás)
content Portable Text Rich text tělo, používané právními stránkami (Soukromí, Podmínky)

Pole features je repeater: klikněte na Přidat, vytvoří se řádek, vyplňte title/description/icon, přetáhněte pro změnu pořadí. Toto nahradilo staré jednotlivé JSON pole sections — žádný ručně psaný JSON. src/lib/cms.ts adaptuje tato pole do props, jaké každá komponenta stránky očekává, takže úprava pole v administraci a uložení aktualizuje živou stránku při dalším požadavku.

Podpole repeateru nelze vnořovat. Model stránky je záměrně plochý: jeden seznam features plus skalární hero/CTA pole pokrývají O nás, Kontakt i Ceník. Přidejte nová skalární nebo repeater pole do seed/seed.json a čtěte je v adaptPage, čímž ho rozšíříte.

Kolekce Popis Soubory
Služby Nabídka služeb s cenami src/content/services/*.md
Stack Položky technologického stacku src/content/stack/*.md
Dokumentace Stránky dokumentace src/content/docs/** (Starlight)

Schémata jsou definována v src/content.config.ts, takže frontmatter je typově kontrolovaný.

Starter je s angličtinou na prvním místě. Souborové záznamy používají prostý <slug>.md s locale: "cs"; pro další jazyky přidejte kopii se sufixem locale (např. about.id.md). Obsah Kafe-CMS nese vlastní pole locale. Viz průvodce internacionalizací.

  • Blog a stránky: upravujte v administraci — změny jsou živé okamžitě, žádný redeploy.
  • Docs/služby/stack: upravujte Markdown pod src/content, spusťte pnpm dev pro náhled, poté commitněte a otevřete pull request.

Uploady editora jdou v produkci na Cloudflare R2 (v dev na lokální souborový systém). Kafe-CMS je servíruje přes same-origin proxy routu (/kafecms/api/media/file/<key>), takže administrace zobrazuje tuto cestu, i když soubor leží v R2 — díky tomu bucket zůstává privátní. Obrázky mohou také ležet v src/assets, aby je Astro optimalizovalo při buildu.